poj-1159 Palindrome **
1 /* 2 * DA-term-Palindrome.cpp 3 * 4 * DP 5 * 6 * 动态规划求解。 7 8 设ch[1]..ch[n]表示字符串1至n位,i为左游标,j为右游标 ,则i从n递减,j从i开始递增。 9 min[i][j]表示i和j之间至少需要插入多少个字符才能对称,初始置全0 ,我们最终需要得到的值是min[1][n].10 则11 if(ch[i]==ch[j]) //如果两个游标所指字符相同,向中间缩小范围12 min[i][j]=min[i+1][j-1];13 else14 min[i][j] = 1 + (min[i+1][j]和min[i][j-1]中的较小值); //如果不同,典型的状态转换方程15 16 *17 */18 19 #include <cstdio>20 using namespace std;21 22 const int maxn = 5000 + 5;23 24 int len, dp[3][maxn] = {}; //循环数组,否则MTL25 // dp[k][i] : 长度为k、起点为i的子串变成回文串的最小加字数(k处为循环数组)26 //对应上面的 min[i][i+k-1]27 char str[maxn];28 29 30 int main(){31 scanf("%d%s", &len, str);32 33 34 //k_0 : 当前长度; k_1: 当前长度-1; k_2:当前长度-235 int k, i, j, k_0 = 2, k_1 = 1, k_2 = 0;36 for(k=2; k<=len; k++){37 for(i=len-k; i>=0; i--){38 j = i + k - 1;39 40 if(str[i] == str[j]) dp[k_0][i] = dp[k_2][i+1];41 else{42 dp[k_0][i] = dp[k_1][i];43 if(dp[k_0][i] > dp[k_1][i+1]) dp[k_0][i] = dp[k_1][i+1];44 dp[k_0][i]++;45 }46 }47 k_0 = (k_0 + 1) % 3; //update48 k_1 = (k_1 + 1) % 3;49 k_2 = (k_2 + 1) % 3;50 }51 printf("%d\n", dp[k_1][0]);52 53 54 return 0;55 }
poj-1159 Palindrome **相关推荐
- POJ 1159 Palindrome(字符串变回文:LCS)
POJ 1159 Palindrome(字符串变回文:LCS) http://poj.org/problem? id=1159 题意: 给你一个字符串, 问你做少须要在该字符串中插入几个字符能是的它变 ...
- 动态规划——Poj 1159 Palindrome
1) 题目 Palindrome Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 46005 Accepted: 15688 ...
- POJ 1159 - Palindrome 优化空间LCS
将原串和其逆序串的最长公共子序列求出来为M..那么2*n-M就是所需要加的最少字符..因为求出的M就是指的原串中"潜伏"的最长回文.. 问题转化为求LCS..但是n最大到5000. ...
- POJ 1159 (DP)
题目:http://poj.org/problem?id=1159 思路: 找出原串的最长回文子串,当然这里说的回文子串可以不连续.用原串的长度减去最长回文子串的长度即可得出结果. 设原串a[5001 ...
- 1159 Palindrome
Palindrome Time Limit: 3000ms Memory limit: 65536kB 题目描述 A palindrome is a symmetrical string, that ...
- POJ 3974 Palindrome (算竞进阶习题)
hash + 二分答案 数据范围肯定不能暴力,所以考虑哈希. 把前缀和后缀都哈希过之后,扫描一边字符串,对每个字符串二分枚举回文串长度,注意要分奇数和偶数 #include <iostream& ...
- POJ - 3974 Palindrome(二分+哈希/马拉车)
题目链接:点击查看 题目大意:给出一个字符串,求字符串中最长的回文子串,这个字串可以包含主串本身 题目分析:这个题就是之前徐州网络赛的那个回文题目的弱化版..那个题目正解是要用回文自动机,但我不会,当 ...
- 滚动数组~\(≧▽≦)/~
今天第一次用了滚动数组,缘由要从一道题说起:POJ 1159 Palindrome 题意:给你一个字符串,求对字符串最少添加几个字符可变为回文串. 分析: 简单做法是直接对它和它的逆序串求最长公共子序 ...
- (精)【ACM刷题之路】POJ题目详细多角度分类及推荐题目
POJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期: ...
- POJ刷题列表——正在进行
转载自:http://blog.csdn.net/pyub153/article/details/50480333 初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心 ...
最新文章
- java基盘JavaScript_JavaWeb学习:SSH整合(无障碍整合)
- 创建自己的Vagrant box
- gearman mysql持久化_gearman + mysql方式实现持久化操作示例
- 如何评价MSRA视觉组最新提出的Deformable ConvNets V2?
- Codeforces Round #179 (Div. 2): D. Greg and Graph(Floyd)
- 服务器操作系统修复补丁,最后的更新!微软Windows 7发布KB4534310修复补丁
- allegro怎么导出PCB文件里封装
- HTML特殊字符符号大全
- 云计算基础(二)—— 虚拟化
- Windows实现微信双开
- Private,Public,Protected
- 解决计算机问题联盟,[转载]Ansys证书问题解决方法
- 【vue教程】来自JSpang 技术胖的视频
- ligo 原理_在LIGO的实验中,Ubuntu被用来检测引力波
- ismusicactive副作用_Android得到一个闹钟在第三方
- 电厂计算机工作原理是什么,电力猫的工作原理是什么?电力猫怎么用?
- 100-Days-Of-ML oneday
- 数据可视化datav使用教程文档1
- hyperledger v1.0.5 区块链入门
- conda安装python3.5_解决 Raspbian Miniconda 无法安装最新 Python3.6
热门文章
- 7.26T2某不科学的迷你激光炮
- debian安装emacs23
- iphone android 开发指南 http://mobile.tutsplus.com
- intellij idea cpu占用率太大太满 运行速度太慢解决方案
- json loads No JSON object could be decoded 问题解决
- python报错UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe8 in position 0 解决方案
- maven不能加载ojdbc14.jar的解决方法
- Linux入门(7)——Ubuntu16.04安装wps并解决系统缺失字体问题
- python 如何跳过异常继续执行
- 如何使用AngularJS绑定到复选框值列表?