最长回文子串
dp[i][j]表示从i到j的子串是不是子串,是的话值为1,否则为0
#include<bits/stdc++.h>
using namespace std;
const int N=1001;
int dp[N][N];
char s[N];
int main()
{
gets(s);
int len=strlen(s);
int ans=1;
for(int i=0;i<len;i++){
dp[i][i]=1;
if(i<len-1){
if(s[i]==s[i+1]){
dp[i][i+1]=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){
dp[i][j]=1;
ans=L;
}
}
}
cout<<ans;
return 0;
}