采取动态规划的形式

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;
}