动态规划1002
2016-05-06 21:18
260 查看
题目:
[align=left]Problem Description[/align]
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. <br>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. <br>
[align=left]Sample Input[/align]
abcfbc abfcab
programming contest
abcd mnp
[align=left]Sample Output[/align]
4
2
0
代码:
[align=left]Problem Description[/align]
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. <br>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. <br>
[align=left]Sample Input[/align]
abcfbc abfcab
programming contest
abcd mnp
[align=left]Sample Output[/align]
4
2
0
代码:
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; char s1[1000],s2[1000]; int dp[1000][1000]; int len1,len2; void LCS() { int i,j; memset(dp,0,sizeof(dp)); for(i = 1; i<=len1; i++) { for(j = 1; j<=len2; j++) { if(s1[i-1] == s2[j-1]) dp[i][j] = dp[i-1][j-1]+1; else dp[i][j] = max(dp[i-1][j],dp[i][j-1]); } } } int main() { while(~scanf("%s%s",s1,s2)) { len1 = strlen(s1); len2 = strlen(s2); LCS(); printf("%d\n",dp[len1][len2]); } return 0; }
相关文章推荐
- URAL 1776 Anniversary Firework 概率dp+区间dp
- Angularjs的理解和认识
- c++ primer 学习笔记(2): 函数 function
- 瀑布流
- 使用Pandoc命令将Markdown格式文件转换为HTML格式文件
- extern "C"的用法解析
- VisualGDB 调试NDK程序
- virtual
- Linux用户和组及其权限管理
- c++作业5
- 平日小问题 (1): call of overloaded 'max(char&, char&)' is ambiguous
- 树莓派学习系列2---树莓派的配置详悉
- Activity的生命周期
- 字符串的增删改查
- Android与MVC
- adb的基本运用
- 关于SQL Text类型兼容性
- 浅谈Spring与IOC
- 代码提示
- HDU 4738 Caocao's Bridges(双联通分量+并查集)