采取动态规划的形式
using namespace std;
bool p[355][355];
int main(){
string s;
while(cin>>s){
int start = 0;
int length = 1;
int slen = s.size();
for(int i = 0; i< slen;i++){
p[i][i] = true;
if(s[i] == s[i+1]){
p[i][i+1] = true;
start = i;
length = 2;
}
}//将一个字符和两个字符的初始化
for (int len = 3; len <= slen;len++){
for(int i = 0;i<slen-len+1;i++){
int left = i;
int right = left + len -1;
if(s[left] == s[right] && p[left+1][right-1]){//这行算是关键了
p[left][right] = true;
start = left;
length = len;
}
}
}
cout<<length<<endl;
}
return 0;
}