Common Subsequence(LCS最长公共子序列)
来源:互联网 发布:学做淘宝店视频教程 编辑:程序博客网 时间:2024/05/19 00:39
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.
InputThe 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
42
0
题目大意:
求两字符串的最长公共子序列问题(即LCS问题)。
//AC#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int dp[30][30];char s1[100],s2[100];int main(){ while (scanf("%s %s",s1,s2)!=EOF) { memset(dp,0,sizeof(dp)); for (int i=0;i<strlen(s1);i++) { for (int j=0;j<strlen(s2);j++) { if (s1[i]==s2[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]); } }// for (int i=0;i<strlen(s1);i++)// {// for (int j=0;j<strlen(s2);j++)// {// printf("%d ",dp[i+1][j+1]);// }// printf("\n");// } printf("%d\n",dp[strlen(s1)][strlen(s2)]); } return 0;}
测试数据:abcd becd
测试结果:3
图解: s1\s2 b e c da 0 0 0 0
b 1 1 1 1
c 1 1 2 2
d 1 1 1 3- 最长公共子序列(Longest Common Subsequence LCS)
- 最长公共子序列(Longest-Common-Subsequence,LCS)
- uva10405 - Longest Common Subsequence(LCS,最长公共子序列)
- HD1159 Common Subsequence 最长公共子序列(LCS)
- poj1458-Common Subsequence(最长公共子序列,LCS)
- 最长公共子序列LCS(The longest common subsequence)
- Common Subsequence(LCS最长公共子序列)
- 最长公共子序列问题(LCS) Longest common subsequence
- HDU1159 Common Subsequence(最长公共子序列LCS)
- 最长公共子序列问题(Longest common subsequence,LCS)
- LCS(Longest Common Subsequence 最长公共子序列)
- POJ 1458 Common Subsequence 最长公共子序列(LCS)
- 最长公共子序列与最长公共子串(Longest Common Subsequence, LCS)
- uva 10405 Longest Common Subsequence 最长公共子序列 LCS
- 最长公共子序列(LCS, Longest Common Subsequence), POJ 1458
- PKU-1458 Common Subsequence (最长公共子序列LCS)
- 求最长公共子序列Longest Common Subsequence LCS
- hdu 1159 Common Subsequence(LCS最长公共子序列)
- 一个对象占用多少字节
- android中的aidl的使用
- 简易扎金花java程序
- AS中使用三方Logger插件打印不一样的log
- 项目中常碰到的点击到某Fragment才开始加载该Fragment的数据的一小解决方案
- Common Subsequence(LCS最长公共子序列)
- 教你如何破译乱码
- 数据库索引优缺点
- Word发布测试
- libc.so.6丢失修复
- TestNG中测试方法的依赖关系详解
- 抽象类与借口的实际应用
- Python练习100例-3
- 数据结构实验之栈八:栈的基本操作