CSU-ACM2017暑期训练8-动态规划初步 C
来源:互联网 发布:期货分仓软件 编辑:程序博客网 时间:2024/06/01 08:44
C - Common Subsequence
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 abfcabprogramming contest abcd mnp
Sample Output
420
状态转移方程
#include <iostream>#include <cstdio>#include <algorithm>#include <string>#include <cstring>#include <vector>using namespace std;int dp[1000][1000];int main(){#ifdef TESTfreopen("test.txt", "r", stdin);#endif // TEST string str1, str2; int len1, len2; while(cin >> str1 >> str2){ len1 = str1.length(), len2 = str2.length(); memset(dp, 0, sizeof(dp)); for(int i = 0; i < len1; i++){ for(int j = 0; j < len2; j++){ if(str1[i] == str2[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]); } } cout << dp[len1][len2] << endl; } return 0;}
阅读全文
0 0
- CSU-ACM2017暑期训练8-动态规划初步 C
- CSU-ACM2017暑期训练8-动态规划初步 F
- CSU-ACM2017暑期训练8-动态规划初步 D
- CSU-ACM2017暑期训练6-bfs C
- CSU-ACM2017暑期训练1-Debug与STL C
- CSU-ACM2017暑期训练10-并查集&&HASH C
- CSU-ACM2017暑期训练16-树状数组 C
- CSU-ACM2017暑期训练3 J
- CSU-ACM2017暑期训练4-dfs D
- CSU-ACM2017暑期训练4-dfs E
- CSU-ACM2017暑期训练4-dfs F
- CSU-ACM2017暑期训练4-dfs G
- CSU-ACM2017暑期训练5-三分 E
- CSU-ACM2017暑期训练6-bfs I
- CSU-ACM2017暑期训练6-bfs H
- CSU-ACM2017暑期训练6-bfs G
- CSU-ACM2017暑期训练5-三分 A
- CSU-ACM2017暑期训练5-三分 D
- 子类继承父类的构造方法
- undefined method 'before_filter' for Class
- HDU 6073 Matching In Multiplication 思维(拓扑)
- 单例
- 2017 暑假艾教集训 day4
- CSU-ACM2017暑期训练8-动态规划初步 C
- HDU
- 浏览器兼容
- 数据结构和算法分析之排序算法--插入排序篇(直接插入排序和希尔排序)
- tomcat安装与配置
- POJ 2528 Mayor's posters(加分割点)
- Android Webview 用 WebBackForwardList 来判断是否是返回的界面
- 1030. 完美数列(25)
- HDU 1569 find the safest road