描述:计算存在的最长回文串长度
#include <cstdio>
#include <cstring>
#include <cstdlib>
int n,sum;
char str[1010];
int v[1010][1010];
int max(int x,int y)
{
return x>y?x:y;
}
int dp(int x,int y)
{
if(v[x][y]) return v[x][y];
if(x==y) return v[x][y]=1;
if(x>y) return 0;
if(str[x]==str[y]) v[x][y]=dp(x+1,y-1)+2;
else v[x][y]=max(dp(x+1,y),dp(x,y-1));
return v[x][y];
}
int main()
{
// freopen("a.txt","r",stdin);
while(scanf("%d",&n)!=EOF)
{
getchar();
for(int i=0; i<n; i++)
{
memset(v,0,sizeof(v));
gets(str);
printf("%d\n",dp(0,strlen(str)-1));
}
}
return 0;
}
11151 - Longest Palindrome
最新推荐文章于 2020-03-24 16:38:49 发布