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.abcfbc abfcab
programming contest
abcd mnp
4
2
0
題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1159
題目大意:求最長公共子序列(LCS)
題目分析:LCS模板題
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int const MAX = 500;
char s1[MAX], s2[MAX];
int dp[MAX][MAX];
int main()
{
while(scanf("%s %s", s1, s2) != EOF)
{
memset(dp, 0, sizeof(dp));
int l1 = strlen(s1);
int l2 = strlen(s2);
for(int i = 1; i <= l1; i++)
{
for(int j = 1; j <= l2; 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[l1][l2]);
}
}
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。