POJ 1458(dp)
2016-07-19 09:52
190 查看
Description
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, x ij = 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.
Input
The program input is from the std input. Each data set in the input contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct.
Output
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.
Sample Input
abcfbc abfcab
programming contest
abcd mnp
Sample Output
4
2
0
4000
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, x ij = 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.
Input
The program input is from the std input. Each data set in the input contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct.
Output
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.
Sample Input
abcfbc abfcab
programming contest
abcd mnp
Sample Output
4
2
0
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> #include <map> #include <queue> #include <cmath> #include <vector> #include <functional> using namespace std; const int maxn = 1000 + 5; char s1[maxn], s2[maxn]; int maxlen[maxn][maxn]; int main() { while (scanf ("%s%s", s1, s2) != EOF) { int l1 = strlen (s1); int l2 = strlen (s2); memset (maxlen, 0, sizeof(maxlen)); for (int i = 1; i <= l1; i++) { for (int j = 1; j <= l2; j++) { if (s1[i - 1] == s2[j - 1]) { maxlen[i][j] = maxlen[i - 1][j - 1] + 1; } else { maxlen[i][j] = max (maxlen[i - 1][j], maxlen[i][j - 1]); } } } printf ("%d\n", maxlen[l1][l2]); } return 0; }
4000
相关文章推荐
- Homework- 九九乘法表、简易的电梯实现
- Bootstrap表单布局
- asp生成报表并打印
- 在PHP语言中使用JSON和将json还原成数组的方法
- hdoj1702ACboy needs your help again!(栈和队列)
- datagrid
- 7. PHP 拷贝图像 imagecopy 与 imagecopyresized 函数
- window open opener
- Linux和windows双系统启动问题之一(win7 + ubuntu14.04 + legacy bios + mbr)
- linux修改系统时间
- mybatis分页的实现
- php进行支付宝开发中return_url和notify_url的区别分析
- D - Prime Ring Problem hdu1016
- Arcgis空间数据交换格式Shapefile文件说明
- Qt学习笔记---信号与槽
- Linux(CentOS)查看操作系统版本命令
- SpringMVC自定义视图 Excel视图和PDF视图
- JavaScript基础
- 字符截取;字符替换;
- mybatis动态SQL语句