[ACM_动态规划] Palindrome

简介:


http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28415#problem/D

 

题目大意:给一个长为n的字符串,问最少插入几个字符成回文串

解题思路:总长-最长公共(原来的和其倒过来的串)子序列(LCS) 

知识详解——LCS:给出两个子序列A,B,求长度最大的公共子序列(如152687和2356984——>568或268);不妨设d(i,j)为A,B的LCS,   则最有子结构为::A[i]=B[j]时,d(i,j)=d(i-1,j-1)+1;否则,d(i,j)=max{d(i-1,j),d(i,j-1)};复杂度为O(m*n),也可用滚动数组法优化。

  View Code

 

 

注意: 上面的代码虽然实现了求解,但是 由于开了一个c[2005][2005]的数组所以不幸Memory Limit Exceeded”,通过观察不难发

其最优子结构中每次计算只用到两层数据,因此可以考录建立一个c[2][2005]的动态表来节省空间,代码如下:
  View Code

 

 

标签:  LCS最长公共子序列


本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/3245558.html ,如需转载请自行联系原作者
相关文章
|
8月前
|
算法
1091 zoj Knight Moves的BFS算法和DFS
1091 zoj Knight Moves的BFS算法和DFS
34 0
|
5月前
|
Java
hdu1016 Prime Ring Problem【素数环问题(经典dfs)】
hdu1016 Prime Ring Problem【素数环问题(经典dfs)】
24 0
|
6月前
|
算法
poj 1159 Palindrome(最长公共子串)
关于求最长公共子串, 用到的是动态规划
15 0
|
7月前
|
算法
The kth great number(小根堆思想,模板题)
The kth great number(小根堆思想,模板题)
21 0
The kth great number(小根堆思想,模板题)
|
8月前
|
机器学习/深度学习 存储 缓存
Lecture 3:动态规划
Lecture 3:动态规划
|
算法 索引
LeetCode 214. Shortest Palindrome
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。
56 0
LeetCode 214. Shortest Palindrome
LeetCode 409. Longest Palindrome
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。
53 0
LeetCode 409. Longest Palindrome
AtCoder Beginner Contest 226 E - Just one(dfs求连通块 组合数学)
AtCoder Beginner Contest 226 E - Just one(dfs求连通块 组合数学)
80 0
|
Windows
German Collegiate Programming Contest 2019 H . Historical Maths (二分 大数)
German Collegiate Programming Contest 2019 H . Historical Maths (二分 大数)
63 0
German Collegiate Programming Contest 2019 H . Historical Maths (二分 大数)