Description
Input
Output
Sample Input
5 Ab3bd
Sample Output
2
题目大意:求插入最少的字符使得串为palindeome(回文串)。
遇到问题要剖析其原型,此题就是正序和逆序的LCS,结果来n-commenlength.
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#define LL long long
#define inf 0x3f3f3f3f
using namespace std;
short dp[5001][5001];
char a[5005],b[5005];
int main()
{
int n,m,x,k,i,j;
int cla;
while(~scanf("%d",&n))
{
int s=0;
dp[0][0]=0;<span id="transmark"></span>
scanf("%s",a);
for(i=n-1;i>=0;i--)
b[s++]=a[i];
b[s]='\0';
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(a[i-1]==b[j-1])
{
dp[i][j]=dp[i-1][j-1]+1;
}
else
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
cout<<n-dp[n][n]<<endl;
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/grit_icpc/article/details/47974055