PAT (Advanced Level) Practice 1040 Longest Symmetric String (25 分) 最長迴文字串 dp
阿新 • • 發佈:2018-12-11
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; const int maxn=1005; char s[maxn]; int dp[maxn][maxn]; int ans; void init() { ans=1; memset (dp,0,sizeof(dp)); } int main() { init(); cin.getline(s,1005); int len=strlen(s); for (int i=0;i<len;i++) dp[i][i]=1; for (int i=0;i<len-1;i++) dp[i][i+1]=s[i]==s[i+1]?1,ans=2:0; for (int i=3;i<=len;i++) { for (int j=0;j<len-i+1;j++) { if(s[j]==s[j+i-1]&&dp[j+1][j+i-2]) { dp[j][j+i-1]=1; ans=i; } } } printf("%d\n",ans); return 0; }