http://acm.hdu.edu.cn/showproblem.php?pid=1513
给一个字符串,求这个字符串最少增加几个字符能变成回文,如Ab3bd可以增加2个字符变为回文:Adb3bdA。通过这样的结论可以和最长公共子串联系起来(未证明):S和S' (注:S'是S的反串)的最长公共子串其实一定是回文的。这样我们就可以借助lcs来解决该题,即用s的长度减去lcs的值即可。
#include<string.h> #include<stdio.h> short ans[2][5001]; int max(int a,int b) { return a>b?a:b; } int main() { int i,j,len; char a[5001],b[5001]; while(scanf("%d",&len)!=EOF) { gets(a); gets(a); for(i=len-1,j=0;i>=0;i--)b[j++]=a[i]; b[j]='