标签:
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3641 Accepted Submission(s): 1252
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <iostream> 5 #include <vector> 6 #include <queue> 7 #include <cmath> 8 #include <set> 9 using namespace std; 10 11 #define N 5005 12 13 int max(int x,int y){return x>y?x:y;} 14 int min(int x,int y){return x<y?x:y;} 15 int abs(int x,int y){return x<0?-x:x;} 16 17 18 int dp[2][N]; 19 int n; 20 char s[N]; 21 22 main() 23 { 24 int i, j, k; 25 while(scanf("%d",&n)==1){ 26 memset(dp,0,sizeof(dp)); 27 scanf("%s",s+1); 28 char s1[N]; 29 for(i=n;i>=1;i--) s1[i]=s[n-i+1]; 30 int maxh=0; 31 for(i=1;i<=n;i++){ 32 memset(dp[i&1],0,sizeof(dp[i&1])); 33 for(j=1;j<=n;j++){ 34 if(s[i]==s1[j]){ 35 dp[i&1][j]=max(dp[!(i&1)][j-1]+1,dp[i&1][j]); 36 } 37 else dp[i&1][j]=max(dp[!(i&1)][j],dp[i&1][j-1]); 38 maxh=max(maxh,dp[i&1][j]); 39 } 40 } 41 printf("%d\n",n-maxh); 42 } 43 }
标签:
原文地址:http://www.cnblogs.com/qq1012662902/p/4654774.html