其实是不要求的,学习一下二维动态规划
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1010;
int dp[MAXN][MAXN];// 1 表示是回文子串, 0表示不是
int main(void)
{
freopen("pat0314/in.txt","r",stdin);
int ans = 0;
string s;
getline(cin,s);
int len = s.size();
dp[0][0] = 1;
for(int i = 1;i<len;i++)
{
dp[i][i] = 1;
ans = 1;
if(s[i] == s[i - 1])
{
dp[i - 1][i] = 1;
ans = 2;
}
}
for(int L = 3;L <= len;L++) //将状态从一个转移到三个 逐渐转移到多个 二维的动态规划数组
{
for(int i = 0;i + L - 1 < len;i++)
{
int j = i + L - 1;
if(s[i] == s[j] && dp[i + 1][j - 1] == 1)
{
// cout<<i<<" "<<j<<endl;
dp[i][j] = 1;
ans = L;
}
}
}
cout<<ans<<endl;
return 0;
}