Longest Palindromic Subsequence
来源:互联网 发布:淘宝小号 周点数查询 编辑:程序博客网 时间:2024/06/06 20:52
本次題目是有關於動態規劃的練習,Longest Palindromic Subsequence,目的是找出在給定的字串中最長的回蚊子字串的長度。
Given a string s, find the longest palindromic subsequence's length in s. You may assume that the maximum length of s is 1000.
Example 1:
Input:
"bbbab"
Output:
4
One possible longest palindromic subsequence is "bbbb".
Example 2:
Input:
"cbbd"
Output:
2
One possible longest palindromic subsequence is "bb".
首先先確定子問題:
基本情況
if i == j, 則longest[i][j] = 1,
if i+1 == j, 則longest[i][j] = 2 if s[i] == s[j]
longest[i][j] = 1 否則
- s[i] == s[j]
table[i][j] = max(table[i+1][j], table[i][j-1], table[i+1][j-1] + 2) - s[i] != s[j]
table[i][j] = max(table[i+1][j], dp[i][j-1], table[i+1][j-1])
再列出子問題之後就方便我們編程,透過創建二為數組table[i][j]記錄在s中I~J的最大長度,顯然最後要返回的值是table[0][size - 1]的答案,
int longestPalindromeSubseq(string s)
{
if(s.empty())
return 0;
if(s.length() == 1)
return 1;
int size = s.length();
vector<vector<int> > table(size, vector<int>(size, 0)); //初始化二為數組
for(int i = 0; i < size; i++) table[i][i] = 1; //根據i == j, 則longest[i][j] = 1的情況,將 i==j的地方設為1
for(int j = 1; j < size; j++)
{
for(int i = j - 1; i >= 0; i--)
{
if(s[i] == s[j]) //為動態規劃的判斷語句
table[i][j] = max(max(table[i + 1][j], table[i][j - 1]), 2 + table[i + 1][j - 1]);
else
table[i][j] = max(table[i + 1][j], table[i][j - 1]);
}
}
return table[0][size - 1];
}
- Longest Palindromic Subsequence
- PIQ07: Longest Palindromic Subsequence
- leetcode_middle_42_516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516 Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- Lettcode_516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- leetcod_516. Longest Palindromic Subsequence
- Longest Palindromic Subsequence
- leetcode516. Longest Palindromic Subsequence
- 516. Longest Palindromic Subsequence
- Longest Palindromic Subsequence
- 【516】 Longest Palindromic Subsequence
- K-近邻算法—基本原理与实战
- 【ShawnZhang】带你看蓝桥杯—— 算法提高 排列数
- CentOS7 安装MongoDB 3.0服务器
- iframe 高度100%时,出现垂直滚动条
- 【直流传动与控制系统】第12周CDIO工作报告
- Longest Palindromic Subsequence
- hibernate的hql语言实现增删改查
- Spring 对象作用域
- DevExpress 13.2.6源码、安装包、汉化包下载和教程,devexpress13.2.6
- 斯坦福大学机器学习——因子分析(Factor analysis)
- VC中MessageBox与AfxMessageBox用法与区别
- php项目中自动加载机制
- MySQL 连接远程数据库
- 常用git命令