一个注意点,本题的动态规划内容是在长度大于等于3的时候展开的,那么在此之前处理1,2
长度的时候,记得不要忘记ans的值的变化
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
const int maxn=1010;
int d[maxn][maxn]={0};
int main()
{
string str;
getline(cin,str);
int len=str.size(),ans=1;
for(int i=0;i<len;i++)
{
d[i][i]=1;
if(i+1!=len)
{
if(str[i]==str[i+1])
{
d[i][i+1]=1;
ans=2;
}
}
}
for(int L=3;L<=len;L++)
{
for(int i=0;i+L-1<len;i++)
{
if(str[i]==str[i+L-1]&&d[i+1][i+L-2]==1)
{
d[i][i+L-1]=1;
ans=L;
}
}
}
printf("%d",ans);
}