1040 Longest Symmetric String (25 分)

最长回文子串。

动态规划解法,时间复杂度:\(O(n^2)\)

const int N=1010;
bool f[N][N];
string s;

int main()
{
    getline(cin,s);

    int res=0;
    for(int i=s.size()-1;i>=0;i--)
        for(int j=i;j<s.size();j++)
        {
            if(i == j) f[i][j]=true;
            else if(i+1 == j) f[i][j]=(s[i]==s[j]);
            else f[i][j]=f[i+1][j-1] && (s[i]==s[j]);

            if(f[i][j]) res=max(res,j-i+1);
        }

    cout<<res<<endl;
    //system("pause");
    return 0;
}
posted @ 2021-03-08 19:25  Dazzling!  阅读(24)  评论(0编辑  收藏  举报