Poj 1159
题意; 5 Ab3bd 加上多少个字符可以是字符串为回文串 #include<iostream> using namespace std; short dp[5005][5005]; char s1[5005],s2[5005]; int fmax(int x,int y) { if(x>y) return x; return y; } int main() { int n; int i,j; while(scanf("%d",&n)!=EOF) { scanf("%s",s1+1); for(i=n;i>=1;i--) s2[i]=s1[n-i+1]; memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++)//s1的标号 for(j=1;j<=n;j++)//s2的标号 { if(s1[i]==s2[j]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=fmax(dp[i-1][j],dp[i][j-1]); } printf("%d\n",n-dp[n][n]); } return 0; }