您的位置:首页 > 产品设计 > UI/UE

POJ 1458 Common Subsequence (最长公共子序列)

2014-07-10 16:46 197 查看
题意:

两个字符串,问最多有多少个相等的,注意顺序不能变。

思路:

可以用LCS,这是以前用递归写的。

代码:

#include<stdio.h>
#include<string.h>
char str1[501],str2[501];
int most,len1,len2,mark[501][501];
void dp(int a,int b,int cnt)
{
if(len1==a||len2==b)
{
if(most<cnt)
most=cnt;
return ;
}
if(mark[a][b]!=cnt+1)
mark[a][b]=cnt+1;
else
return ;
if(str1[a]==str2[b])
{
dp(a+1,b+1,cnt+1);
}
else
{
dp(a,b+1,cnt);
dp(a+1,b,cnt);
}
}
int main()
{
while(scanf("%s %s",str1,str2)!=EOF)
{
len1=strlen(str1);
len2=strlen(str2);
most=0;
memset(mark,0,sizeof(mark));
dp(0,0,0);
printf("%d\n",most);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: