您的位置:首页 > 其它

HDU 1159 && poj 1458

2013-10-10 16:42 309 查看
这是两道最简单的最基础的求最大公共子序列的长度:

/*
对于求最大公共子序列长度

if(a[i-1]==b[j-1])
{
dp[i][j]=dp[i-1][j-1]+1;//这里比较好理解,当a[i-1]==b[j-1],那么自然dp[i][j]+1
}
else
{
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);//如果不是相等,那么就得比较dp[i-1][j],dp[i][j-1]谁比较大
}
*/

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=1010;

char a
,b
;
int dp

;

int main()
{
int i,j;
int len1,len2;
while(scanf("%s %s",a,b)!=  EOF)
{
len1=strlen(a);
len2=strlen(b);

memset(dp,0,sizeof(dp));

for(i=1; i<=len1; i++)
{
for(j=1 ; j<=len2; j++)
{
if(a[i-1]==b[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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: