题意:
两个字符串,问最多有多少个相等的,注意顺序不能变。
思路:
可以用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;
}