【PAT】1040. Longest Symmetric String

来源:互联网 发布:淘宝进销存系统 编辑:程序博客网 时间:2024/06/05 15:40

考查点:dp,最长回文串

#define LOCAL#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <vector>#include <map>#include <set>#include <queue>#include <stack>#define FOR(i, x, y) for(int i = x; i <= y; i++)#define rFOR(i, x, y) for(int i = x; i >= y; i--)#define MAX 220#define oo 0x3f3f3f3fusing namespace std;char str[1010];int dp[1010][1010];int main(){     #ifdef LOCAL        freopen("data.in","r",stdin);        freopen("data.out","w",stdout);    #endif // LOCAL    gets(str);    int len=strlen(str);    int ans=1;    FOR(i,0,len-1)    {        dp[i][i]=1;        if(i<len-1){            if(str[i]==str[i+1]){                dp[i][i+1]=1;                ans=2;            }        }    }    FOR(i,3,len)    {        for(int j=0;j+i-1<len;j++)        {            int r=j+i-1;            if(str[j]==str[r]&&dp[j+1][r-1]==1){                dp[j][r]=1;ans=i;            }        }    }    cout<<ans<<endl;    return 0;}


0 0