POJ---1159-Palindrome(01DP)
2015-08-13 14:49
387 查看
E - Palindrome
Time Limit:3000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Submit Status
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
Sample Output
Time Limit:3000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Submit Status
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 <iostream> #include <cstring> #include <cmath> #include <cstdio> #include <algorithm> using namespace std; char s1[5001],s2[5001],s; int dp[2][5001]; int main() { int n,i,j; while(cin>>n) { memset(dp,0,sizeof(dp)); for(i=1,j=n; i<=n; i++,j--) { cin>>s; //scanf("%c",&s); s1[i]=s2[j]=s; } int maxl=0,a,b; for(i=1; i<=n; i++) for(j=1; j<=n; j++) { a=i%2,b=(i-1)%2; if(s1[i]==s2[j]) dp[a][j]=dp[b][j-1]+1; else dp[a][j]=max(dp[b][j],dp[a][j-1]); if(maxl<dp[a][j]) maxl=dp[a][j]; } cout<<n-maxl<<endl; } return 0; }
相关文章推荐
- poj-1458-Common Subsequence(LCS)
- 使用 libevent 和 libev 提高网络应用性能
- 人件札记:开放式的办公室环境
- [转] js 实现table每列可左右拖动改变列宽度
- HDU ACM 2011 多项式求和
- iOS8扩展插件Extension的开发
- Echarts小感
- NSURLCache
- PAT 1028. List Sorting (25)
- xilinx ise 的planahead的使用2
- 深入理解SELinux SEAndroid 第二部分
- KMP 练习
- Java - Difference between Stack and Heap memory in Java
- 计算机视觉-机器学习近年部分综述
- JS控制DIV隐藏显示
- Asp.net动态页面静态化之初始NVelocity模板引擎
- Download功能的实现
- 创建oracle数据库
- 简单的Queue
- Lua中的元表与元方法学习总结