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

#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;
}

相关文章:

  • 2022-12-23
  • 2021-06-25
  • 2021-07-05
  • 2021-10-27
  • 2022-12-23
  • 2022-12-23
  • 2021-07-31
  • 2022-01-22
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-06
  • 2021-09-25
  • 2022-12-23
  • 2021-05-25
相关资源
相似解决方案