题目:
思路分析:
一个简单的dp问题 思路同求回文子串!
dp[i][j]是i到j是对称的我们可以由dp i i一步一步更新
代码实现:
const int MAX=1010;
int dp[MAX][MAX];
int main(){
string s;
getline(cin,s);
int n=s.size();
int ans=1;
for(int i=0;i<n;i++){
dp[i][i]=1;
if(i>=n-1) continue;
if(s[i]==s[i+1]) {
dp[i][i+1]=1;
ans=2;
}
}
for(int l=3;l<n;l++){
for(int i=0;i<n;i++){
int j=i+l-1;
if(j>n) continue;
if(s[i]==s[j]&&dp[i+1][j-1]==1){
dp[i][j]=1;
ans=l;
}
}
}
cout<<ans<<endl;
}