您的位置:首页 > 其它

//九度OJ教程98 动态规划之LCS(最长公共子序列)

2013-02-16 20:29 176 查看
//九度OJ教程98 动态规划之LCS(最长公共子序列)
//http://ac.jobdu.com/problem.php?cid=1040&pid=97
#include<stdio.h>
#include<string.h>
#define MAXS 103
int main()
{
int dp[MAXS][MAXS],la,lb,i,j,max;
char a[MAXS],b[MAXS];
char *p=a+1,*q=b+1;
while(~scanf("%s",p))
{
scanf("%s",q);
la=strlen(p);
lb=strlen(q);
for(i=0;i<=la;i++)dp[i][0]=0;
for(j=0;j<=lb;j++)dp[0][j]=0;
max=0;
for(i=1;i<=la;i++)
{
for(j=1;j<=lb;j++)
{
if(a[i]==b[j])dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=(dp[i][j-1]>dp[i-1][j]?dp[i][j-1]:dp[i-1][j]);
if(max<dp[i][j])max=dp[i][j];
}
}
printf("%d\n",max);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: