#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
char str1[], str2[];
int f[][];//记录状态
//动态规划是一种记忆化搜索
/*有俩个字符串,求出他们的最长公共子序列
,例如:
acdtfs
aldtks
最长公共子序列是adts,长度为4
n,m
string1(length = n)
string2(length = m)
f[i][j]表示1串第i个与第二个串第j个匹配得到
的子序列最大长度
f[i][j] = max(f[i - 1][j], f[i][j - 1]);
f[i - 1][j - 1] + 1;
*/
int main(){
int i, j, k;
int n, m;
scanf("%d%d",&n,&m);
scanf("%s%s",str1 + , str2 + );
f[][] = ;
for(int i = ; i <= n; i++){
for(int j = ; j <= m; j++){
if(str1[i] == str2[j]){
f[i][j] = f[i - ][j - ] + ;
}
f[i][j]=max(f[i][j], f[i-][j]);
f[i][j]=max(f[i][j], f[i][j-]);
}
}
printf("%d\n", f[n][m]);
return ;
}
 #include <iostream>
using namespace std;
/*有一串数,求出它的最大不下降子序列的
长度(等于也包括)
如1, 2, 5, 3, 6, 2, 9, 10
答案是
1 2 3 6 9 10(这只是其中之一)
f[i]表示子序列包括数字i的时候,最长不下降子序列的长度
f[i] = max(f[j] + 1) a[i] > a[j];
ans = max(f[i])
*/
int a[];
int f[];
int memory[];//记录状态
int main(){
int i, j, k;
int n;
scanf("%d", &n);//数串的长度
for(i = ; i <= n; i++){
scanf("%d", &a[i]);
}
int temp;
f[] = ;//第一个为1
for(i = ; i <= n; i++){
f[i] = ;
for(j = ; j <= i - ; j++){
if(a[i] > a[j]){//如果后面的数字更大
if(f[i] < f[j] + ){//如果后面数字的最长子序列长度小于前面最长子序列长度 + 1
f[i] = f[j] + ;//更新此时的最长子序列长度
memory[i] = j;//记录i位置的前一个位置
}
}
}
}
int ans = , mark;//mark用来取得记录最大不下降子序列的下标,ans用来记录大子序列的值
for(i = ; i <= n; i++){
if(ans < f[i]){
mark = i;
ans = f[i];
}
}
temp = mark;
//倒序输出记录状态 (这里可以利用一个栈顺序输出)
while(temp > ){
printf("%d ", a[temp]);
temp = memory[temp];
}
printf("\n%d\n", ans);
return ;
}

最长公共子序列的优秀博文:https://blog.csdn.net/someone_and_anyone/article/details/81044153

最新文章

  1. SpringAOP代理报错问题
  2. 用Java计算某个日期100天后的日期
  3. [Leetcode] Next Permutation
  4. Struts2+Hibernate+Spring 整合示例[转]
  5. [Android Memory] Android Zipalign zip对齐优化app程序
  6. Decode放在where条件后的新用法
  7. 【DFS+记忆搜索】NYOJ-10-Skiing
  8. RFC 文档(中文与英文)
  9. iOS 类管理
  10. oracle_恢复流程图
  11. Hive HQL学习
  12. android 调试工具ADB命令详解
  13. SublimeText3解决中文乱码
  14. 使用oracle sqldr命令导入文件后出现中文乱码问题
  15. 浅谈redis的HyperLogLog与布隆过滤器
  16. 一起学Hive——总结复制Hive表结构和数据的方法
  17. 11.13git和redis
  18. centos6 安装python2.7 并做软件兼容处理 及 MySQLdb模块安装
  19. java 中,for、for-each、iterator 区别
  20. Sublime Text 之运行 js 方法[2015-5-6更新mac下执行js]

热门文章

  1. Navicat 连接远程服务器mysql 长时间不操作会连接很久
  2. loj2977 巧克力 (斯坦纳树+随机化)
  3. CCF201812-3 CIDR合并
  4. 算法-动态规划 Dynamic Programming--从菜鸟到老鸟
  5. JavaEEspring整理
  6. python的socket解析
  7. meterpreter基础命令大全
  8. NPOI读取excel表,如果有公式取出的是公式,想要取数字怎么办?
  9. 【OpenGL】代码记录01创建窗口
  10. Node的express配置使用ejs模板