现在的位置: 首页 > 综合 > 正文

11151 – Longest Palindrome

2012年12月17日 ⁄ 综合 ⁄ 共 485字 ⁄ 字号 评论关闭
描述:计算存在的最长回文串长度
#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;
}

抱歉!评论已关闭.