hud1159
2016-03-31 10:44
246 查看
A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = <x1, x2, ..., xm> another sequence Z = <z1, z2, ..., zk> is a subsequence of X if there exists a strictly increasing
sequence <i1, i2, ..., ik> of indices of X such that for all j = 1,2,...,k, xij = zj. For example, Z = <a, b, f, c> is a subsequence of X = <a, b, c, f, b, c> with index sequence <1, 2, 4, 6>. Given two sequences X and Y the problem is to find the length of
the maximum-length common subsequence of X and Y.
The program input is from a text file. Each data set in the file contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct. For each set of data the program prints on the standard
output the length of the maximum-length common subsequence from the beginning of a separate line.
[align=left]Sample Input[/align]
abcfbc abfcab
programming contest
abcd mnp
[align=left]Sample Output[/align]
[align=left]4[/align]
[align=left]2[/align]
[align=left]0[/align]
[align=left]
[/align]
sequence <i1, i2, ..., ik> of indices of X such that for all j = 1,2,...,k, xij = zj. For example, Z = <a, b, f, c> is a subsequence of X = <a, b, c, f, b, c> with index sequence <1, 2, 4, 6>. Given two sequences X and Y the problem is to find the length of
the maximum-length common subsequence of X and Y.
The program input is from a text file. Each data set in the file contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct. For each set of data the program prints on the standard
output the length of the maximum-length common subsequence from the beginning of a separate line.
[align=left]Sample Input[/align]
abcfbc abfcab
programming contest
abcd mnp
[align=left]Sample Output[/align]
[align=left]4[/align]
[align=left]2[/align]
[align=left]0[/align]
[align=left]
[/align]
<span style="font-family:Courier New;">#include <iostream> #include <string> using namespace std; const int MAXN=1000; int dp[MAXN][MAXN]; int main() { string s1,s2; while(cin>>s1>>s2) { int Len1=s1.length(); int Len2=s2.length(); for(int j=0;j<=Len1;j++) dp[0][j]=0; for(int i=0;i<=Len2;i++) dp[i][0]=0; for(int i=1;i<=Len2;i++) { for(int j=1;j<=Len1;j++) { if(s1[j-1]==s2[i-1]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i][j-1],dp[i-1][j]); } } cout<<dp[Len2][Len1]<<endl; s1.clear(); s2.clear(); } return 0; }</span>
相关文章推荐
- KMP算法
- 开灯问题
- char*,const char*和string的相互转换(转载)
- ios开发的编码规范
- 从GitHub上下载单个文件(夹)
- Android笔记:解决 Your project contains error(s),please fix them before running your application问题
- matlab程序编程
- 【LeetCode】31. Next Permutation解法
- Go语言学习九:Map(集合)、递归函数、类型转换
- 使用magent搭建memcached集群
- yii2-GridView在开发中常用的功能及技巧
- yii使用网页
- -bash: crontab: command not found
- Github push掉坑纪录
- C# decimal类型(值类型、非基本类型)
- 数字信号处理与音频处理(使用Audition)
- tungsten抽取和应用mysql binlog
- php的查询数据
- vc2008对话框中mschart控件应用
- Odoo8.0根据资料的条件来控制画面上的修改、删除按钮显示