poj1159
来源:互联网 发布:菠萝饭软件评价 编辑:程序博客网 时间:2024/05/21 18:33
Palindrome
Time Limit: 3000MS Memory Limit: 65536KTotal Submissions: 46820 Accepted: 16005
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.
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
5Ab3bd
Sample Output
2
Source
IOI 2000
比较水的dp,具体是比较原串和反串的最大公共子序列。
貌似不知道为啥G++就过不去。。。
另外需要注意下数组空间...滚动数组 - -||
#include <iostream>#include <algorithm>#include <cstdio>#define MAX 5001using namespace std;int main(){ int len; cin>>len; char s1[MAX],s2[MAX]; scanf("%s",s1); for(int i=len-1;i>=0;i--) s2[len-1-i] = s1[i]; short cost[2][MAX]; short comp = -1; for(int i=1;i<=len;i++) for(int j=1;j<=len;j++) { if(s1[i-1]==s2[j-1]){ cost[i%2][j] = cost[(i-1)%2][j-1]+1; comp = max(comp,cost[i%2][j]); } else cost[i%2][j] = max(cost[(i-1)%2][j],cost[i%2][j-1]); } cout<<len-comp<<endl; return 0;}
- poj1159
- poj1159
- poj1159
- poj1159
- poj1159
- POJ1159
- poj1159
- poj1159
- poj1159
- POJ1159
- poj1159
- POJ1159 Palindrome
- poj1159 DP
- poj1159 - Palindrome
- POJ1159 Palindrome
- POJ1159--Palindrome
- POJ1159 Palindrome
- poj1159 LCS
- Android和java创建xml文件和解析xml文件剖析
- 如何理解依赖注入和控制反转
- cocos2d-x学习之路(12)--物理引擎box2d使用
- 大素数的应用
- Java设计模式之观察者模式
- poj1159
- ubuntu android 找不到arm-hisiv200-linux-gcc解决办法
- Study notes for Non-negative Matrix Factorization
- 带引用计数的智能指针实现
- 去除Notification Center中的通知
- MonoDroid学习笔记(五)—— 更改TextView字体颜色和背景色及Style样式的定义
- scorm 2004 datamodel 中文解释
- 多进程(父子进程)中的管道通信
- silverlight 格式转换