UVA 11151 - Longest Palindrome

来源:互联网 发布:linux ansi 编辑:程序博客网 时间:2024/06/16 07:34

尽管很容易,还是贴出来吧。

#include<stdio.h>#include<string.h>int n, f[1000][1000], len;char s[1010];void solve(){    memset(f,0,sizeof(f));    for(int i = 0; i < len; i ++)     f[i][i] = 1;    for(int k = 1; k < len; k ++)    {        for(int i = 0; i+k < len; i ++)        {            if(s[i] == s[i+k]) f[i][i+k] = f[i+1][i+k-1] + 2;            else if(f[i+1][i+k] > f[i][i+k-1]) f[i][i+k] = f[i+1][i+k];            else f[i][i+k] = f[i][i+k-1];        }    }    printf("%d\n",f[0][len-1]);}int main(){    char a[10];    while(gets(a) != NULL)    {        sscanf(a,"%d",&n);        while(n --)        {            gets(s);            len = strlen(s);            solve();        }    }     return 0;}
0 0