动态规划题:把一个字符串变为回文串

版权所有。所有权利保留。

欢迎转载,转载时请注明出处:

http://blog.csdn.net/xiaofei_it/article/details/17172891

把一个字符串变成回文串,最少要添加几个字符?

动态规划解:

f(i,j)表示s[i..j]变为回文串需要添加的最少字符数。

f(i,j)=0 if i>=j

f(i,j)=f(i+1,j-1) if i

f(i,j)=min(f(i,j-1),f(i+1,j))+1 if i

代码如下:

#include 
#include 
using namespace std;
#define min(a,b) ((a)<(b)?(a):(b))
int f[100][100];
int main()
{
	string s;
	while (cin>>s)
	{
		memset(f,0,sizeof(f));
		for (int i=s.length()-1;i>=0;i--)
			for (int j=i+1;j


你可能感兴趣的:(ACM/ICPC,动态规划,ACM竞赛解题报告)