leetcode-516-区间DP-最长回文子序列 发表于 2020-05-01 | 分类于 数据结构与算法 题目 解法1234567891011121314151617181920// 动态规划class Solution {public: int longestPalindromeSubseq(string s) { int n = s.size(); // 在子串s[i...j]中,最长回文子序列的长度是dp[i][j] vector<vector<int>> dp(n, vector<int>(n, 0)); for(int i = 0; i < n; ++i) dp[i][i] = 1; for(int i = n - 2; i >= 0; --i){ for(int j = i+1; j < n; ++j){ if(s[i] == s[j]) dp[i][j] = dp[i+1][j-1] + 2; else dp[i][j] = max(dp[i+1][j], dp[i][j-1]); } } return dp[0][n-1]; }};