#include<stdio.h>
#include<string.h>
#define MAX(x,y) ((x)>(y)?(x):(y))
int n,dp[1010][1010];
int solve(char *str)
{
int i,j,t;
for(i=0;i<n;i++)
dp[i][i]=1;
for(i=1;i<n;i++)
{
t=0;
for(j=0;j+i<n;j++)
{
if(str[j]==str[j+i])
t=dp[j+1][j+i-1]+2;
else
t=MAX(dp[j+1][j+i],dp[j][j+i-1]);
dp[j][i+j]=t;
}
}
return dp[0][n-1];
}
int main()
{
char str[1010];
while(~scanf("%s",str))
{
n=strlen(str);
printf("%d\n",solve(str));
}
}
最长回文串子序列
最新推荐文章于 2024-12-07 14:19:22 发布