您的位置:首页 > 其它

poj1159 最大公共子串

2013-06-29 19:55 656 查看
#include<stdio.h>
#include<string.h>
main()
{
int a[2][5003],n,len;
char s[5003];
while(~scanf("%d",&n))
{
scanf("%s",s);
len=strlen(s);
memset(a,0,sizeof(a));
for(int i=1;i<=len;i++)for(int j=1;j<=len;j++)
{
if(s[i-1]==s[len-j])a[i%2][j]=a[(i-1)%2][j-1]+1;//注意这里 只有这个条件成立才可以赋值 否则 不应该有值   此题使用滚动数组
else a[i%2][j]=a[i%2][j-1]>a[(i-1)%2][j]?a[i%2][j-1]:a[(i-1)%2][j];
}
printf("%d\n",len-a[len%2][len]);
memset(s,0,sizeof(s));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐