NYIT 36 最长公共子序列
来源:互联网 发布:天龙八部发型颜色数据 编辑:程序博客网 时间:2024/06/16 13:17
最长公共子序列
时间限制:3000 ms | 内存限制:65535 KB
tip:最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义
- 输入
- 第一行给出一个整数N(0<N<100)表示待测数据组数
接下来每组数据两行,分别为待测的两组字符串。每个字符串长度不大于1000.- 输出
- 每组测试数据输出一个整数,表示最长公共子序列长度。每组结果占一行。
- 样例输入
2asdfadfsd123abcabc123abc
- 样例输出
36
此题有如下递推关系式,当si = ti时,dp[i+1][j+1] = max(dp[i][j]+1,dp[i+1][j]) ;其他情况就是dp[i+1][j+1] = max(dp[i][j+1]+1,dp[i+1][j]) .s序列和t序列是从0开始
<span style="font-size:18px;"> #include<stdio.h>#include<string.h>#include<algorithm>using namespace std;char s[1010],t[1010];int dp[1002][1002];int main(){ int n,i,j,c1,c2; scanf("%d",&n); while(n--) { memset(dp,0,sizeof(dp)); scanf("%s%s",s,t); c1 = strlen(s); c2 = strlen(t); for(i = 0; i<c1; i++) for(j = 0; j<c2; j++) { if(s[i] == t[j]) dp[i+1][j+1] = dp[i][j]+1; else dp[i+1][j+1] = max(dp[i][j+1],dp[i+1][j]); } printf("%d\n",dp[i][j]); } return 0;} </span>
0 0
- NYIT 36 最长公共子序列
- 36 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列...
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- Spring通过JavaScript操作MongoDB
- Oracle字符集转换
- jstl 中获得session 里面值sessionScope
- ViewPager的onPageScrolled回调不完整
- Android 在代码中控制View的填充方式和宽度、高度
- NYIT 36 最长公共子序列
- SpringMVC登录案例
- 很久没来过了。。。说说现状。聊聊我的域名人生
- layoutSubviews和drawRect:(CGRect)rect的用法探讨
- 机器学习---EM算法(分类)
- 获取进程打开的互斥量
- 微信开发资料收集
- Perl调用shell命令方法小结
- Android调用系统拍照,录音,摄像