C++ | Leetcode C++题解之第516题最长回文子序列

题目:

题解:

cpp 复制代码
class Solution {
public:
    int longestPalindromeSubseq(string s) {
        int n = s.length();
        vector<vector<int>> dp(n, vector<int>(n));
        for (int i = n - 1; i >= 0; i--) {
            dp[i][i] = 1;
            char c1 = s[i];
            for (int j = i + 1; j < n; j++) {
                char c2 = s[j];
                if (c1 == c2) {
                    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];
    }
};
相关推荐
aseity25 分钟前
跨平台项目中QString 与 非Qt 跨平台动态库在字符集上的一个实用的互操作约定.
c++·经验分享
CN-Dust32 分钟前
【C++】while语句例题专题
数据结构·c++·算法
用户8055336980335 分钟前
现代Qt开发教程(新手篇)1.11——定时器
c++·qt
澈20742 分钟前
STL迭代器:容器遍历的万能钥匙
开发语言·c++
azoo1 小时前
emplace_back和push_back() 函数添加 cv::Point 类型数据
c++·opencv
样例过了就是过了1 小时前
LeetCode热题 不同路径
c++·算法·leetcode·动态规划
Navigator_Z2 小时前
LeetCode //C - 1031. Maximum Sum of Two Non-Overlapping Subarrays
c语言·算法·leetcode
橙子也要努力变强3 小时前
信号的保存、阻塞与递达
linux·服务器·c++
旖-旎3 小时前
深搜练习(组合总和)(7)
c++·算法·深度优先·力扣