(M)Dynamic Programming:516. Longest Palindromic Subsequence
来源:互联网 发布:php 二维数组 push 编辑:程序博客网 时间:2024/06/02 03:14
这个题一开始没思路,看了别人的答案发现自己题意没理解好。理解好了其实很简单,典型的动态规划。套用别人写的思路:
这个题的子问题是:任意一个该字符串的子串包含的回文串的长度,那么对于这个字符串的子串,我们可以用它在原字符串中的起始位置和结束位置来表示。因此,我们可以用一个二维数组来对子问题进行表示,dp[i][j]表示he longest palindromic subsequence's length of substring(i, j)。则递推表达式是:
dp[i][j] = dp[i+1][j-1] + 2
if s.charAt(i) == s.charAt(j)
otherwise, dp[i][j] = Math.max(dp[i+1][j], dp[i][j-1])
Initialization
: dp[i][i] = 1
class Solution {public: int longestPalindromeSubseq(string s) { int len = s.size(); vector<vector<int>> dp(len, vector<int>(len, 0)); for(int i = 0; i < len; i++){ dp[i][i] = 1; for(int j = i - 1; j >= 0; j--) { if(s[i] == s[j]) dp[j][i] = dp[j+1][i-1] + 2; else dp[j][i] = max(dp[j+1][i], dp[j][i-1]); } } return dp[0][len-1]; }};很多用动态规划找回文子串的递推公式都和这个很像,可以着意记一下。都是比较两边的字符
阅读全文
0 0
- (M)Dynamic Programming:516. Longest Palindromic Subsequence
- week7- Dynamic Programming-NO.516. Longest Palindromic Subsequence
- (M)Dynamic Programming:300. Longest Increasing Subsequence
- 516. Longest Palindromic Subsequence(M)
- (M)Dynamic Programming:673. Number of Longest Increasing Subsequence
- Longest Common Subsequence: Dynamic Programming
- Dynamic Programming--Longest Common Subsequence
- 516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 需要注意的是,dataframe的索引[1:3]是包含1,2,3的,与平时的不同。
- java枚举详解
- 数据类型
- 台式机+笔记本的扩展模式+远程登录设置
- HTML5--常见的新属性(前)
- (M)Dynamic Programming:516. Longest Palindromic Subsequence
- Linux系统安全命令
- 设置 启动页 停留时间 IOS Swift
- Scrapy爬虫原理及实践
- 机器学习第3章第6节 : 图像的日落效果
- 微信公众平台开发简要说明 —— 基本原理
- CodeFroces gym 100781 A.Adjoin the Networks(贪心)
- HDU 4588Count The Carries
- Revit中Dynamo编程——如何保护自己的算法成果