Palindrome POJ 1159 动态规划

原创 2012年04月11日 18:36:14

Description

A palindrome is a symmetrical string, that is, a string read identically from left to right as well as from right to left. You are to write a program which, given a string, determines the minimal number of characters to be inserted into the string in order to obtain a palindrome. 

As an example, by inserting 2 characters, the string "Ab3bd" can be transformed into a palindrome ("dAb3bAd" or "Adb3bdA"). However, inserting fewer than 2 characters does not produce a palindrome. 

Input

Your program is to read from standard input. The first line contains one integer: the length of the input string N, 3 <= N <= 5000. The second line contains one string with length N. The string is formed from uppercase letters from 'A' to 'Z', lowercase letters from 'a' to 'z' and digits from '0' to '9'. Uppercase and lowercase letters are to be considered distinct.

Output

Your program is to write to standard output. The first line contains one integer, which is the desired minimal number.

Sample Input

5
Ab3bd

Sample Output

2
#include "stdio.h"
const int N=5010;
char s[N];
int c[N][N]={0};
int n;
int min(int a,int b)
{
	if(a<b)
		return a;
	else
		return b;
}
int Dp(int i,int j)
{
	if(i==j)
		return 0;
	if(i>j)
		return 0;
	if(c[i][j]!=0)
		return c[i][j];
	if(s[i]==s[j])
		c[i][j]=Dp(i+1,j-1);
	else
		c[i][j]=min(Dp(i+1,j),Dp(i,j-1))+1;
	return c[i][j];
}
int main()
{
	scanf("%d",&n);
	scanf("\n%s",s+1);
	printf("%d\n",Dp(1,n));
return 0;
}

动态规划这是个很好的例子。做为我一个学习笔记。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

POJ 1159 Palindrome (动态规划)

Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 48269   Accepted: 1657...

动态规划——Poj 1159 Palindrome

1)   题目 Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Su...

动态规划——POJ 1159-Palindrome

palindrome is a symmetrical string, that is, a string read identically from left to right as well as...

poj 1159 Palindrome -- 回文串,动态规划

Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 59029   Ac...

动态规划+滚动数组 -- POJ 1159 Palindrome

给一字符串,问最少加几个字符可以让它成为回文串 比如 Ab3bd 最少需要两个字符可以成为回文串 dAb3bAd 思路: 动态规划 DP[i][j] 意味着从 i 到 j 这段字符变为回文串最少要几个...

Poj1159 Palindrome(动态规划DP求最大公共子序列LCS)

一、Description A palindrome is a symmetrical string, that is, a string read identically from left to ...

POJ1159 Palindrome (动态规划)

Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 61980   Ac...

【POJ 3280】 Cheapest Palindrome(动态规划 回文串)

题意:现在有一个由n个字符组成的长度为m的字符串,可以对其通过增加字符或者删除字符来使其变成回文字符串,而增加或者删除字符都有一个花费,求解使该字符串变成回文所进行操作的最小花费.    用dp[st...

动态规划入门(三)DP 基本思想 具体实现 经典题目 POJ1159 POJ1458 POJ1141

动态规划入门(三)DP 基本思想 具体实现 经典题目 POJ1159 POJ1458 POJ1141 POJ1159,动态规划经典题目,很适合初学者入门练手。 求:为了使字符串左右对称,应该插入的最小...

POJ1159-Palindrome

  • 2011-07-31 22:53
  • 39KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)