标签:
Time Limit: 3000MS | Memory Limit: 65536K | |
Total Submissions: 60290 | Accepted: 20998 |
Description
Input
Output
Sample Input
5 Ab3bd
Sample Output
2
#include <cstdio> #include <algorithm> using namespace std; const int MAXN=5005; unsigned short int dp[MAXN][MAXN];//dp[i][j]表示以第i个字母开头,第j个字母结尾的构成回文子串所需添加的字符串 char s[MAXN]; int main() { int n; while(scanf("%d",&n)!=EOF) { scanf("%s",s); for(int i=0;i<n;i++) { dp[i][i]=0;//有一个字符时 } for(int i=1;i<n;i++) { if(s[i-1]==s[i]) dp[i-1][i]=0; else dp[i-1][i]=1; } for(int k=2;k<n;k++) { for(int i=0,j=k;j<n;i++,j++) { if(s[i]==s[j]) dp[i][j]=dp[i+1][j-1]; else dp[i][j]=min(dp[i+1][j],dp[i][j-1])+1; } } printf("%d\n",dp[0][n-1]); } return 0; }
标签:
原文地址:http://www.cnblogs.com/program-ccc/p/5698921.html