HDU1159 Common Subsequence
来源:互联网 发布:权重轮询调度算法 编辑:程序博客网 时间:2024/06/01 08:55
Common Subsequence
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 37169 Accepted Submission(s): 17020
Problem 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, 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.
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.
Sample Input
abcfbc abfcabprogramming contest abcd mnp
Sample Output
420
Source
Southeastern Europe 2003
就是给你两个字符串,让你求出这两个字符串的最大公共子序列,也就是LCS问题
注意最长公共子串(Longest CommonSubstring)和最长公共子序列(LongestCommon Subsequence, LCS)的区别:子串(Substring)是串的一个连续的部分,子序列(Subsequence)则是从不改变序列的顺序,而从序列中去掉任意的元素而获得的新序列;更简略地说,前者(子串)的字符的位置必须连续,后者(子序列LCS)则不必。比如字符串acdfg同akdfc的最长公共子串为df,而他们的最长公共子序列是adf。LCS可以使用动态规划法解决。下文具体描述。
这里有一篇比较详细的讲解,可以借鉴一下
点击打开链接
#include<stdio.h>#include<string.h>#define max(a,b) (a>b?a:b)//选择较大值char s1[1010];char s2[1010];int dp[1010][1010];int main(){ while(scanf("%s%s",s1,s2)!=EOF) { int i,j; int len1=strlen(s1); int len2=strlen(s2); 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]); } } printf("%d\n",dp[len1][len2]); } return 0;}
0 0
- HDU1159 Common Subsequence (LCS)
- HDU1159--Common Subsequence
- hdu1159-Common Subsequence
- hdu1159 Common Subsequence
- HDU1159 Common Subsequence
- HDU1159:Common Subsequence
- hdu1159 Common Subsequence DP
- HDU1159 Common Subsequence
- HDU1159,Common Subsequence,toCharArray()
- HDU1159:Common Subsequence(LCS)
- HDU1159 Common Subsequence
- hdu1159 Common Subsequence(LCS)
- HDU1159---Common Subsequence
- hdu1159 Common Subsequence
- hdu1159 Common Subsequence--DP
- HDU1159:Common Subsequence
- [HDU1159]-Common Subsequence
- HDU1159-Common Subsequence
- 过得了自己这关的,就一定能过得了客户那关——龙睛舫加盟品牌全案策划案例分享
- Gephi+Inkscape图论画图
- Gradle中使用Tomcat插件
- [kuangbin带你飞]专题五 【并查集】 【--完结--】
- POJ3233
- HDU1159 Common Subsequence
- 设计模式之责任链
- c++中创建一个指针指向一个一维数组、二维数组的方法
- Java中的Comparable与Comparator
- 挂在光盘出现写保护mount: block device /dev/sr0 is write-protected, mounting read-only
- log4j.properties 详解与配置步骤
- javascript:void(0)的作用
- 进程和线程
- 托福写作10-viewpoints on pets