动态规划模板1|LIS最长上升子序列

Posted fisherss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划模板1|LIS最长上升子序列相关的知识,希望对你有一定的参考价值。

LIS最长上升子序列

技术分享图片
技术分享图片

dp[i]保存的是当前到下标为止的最长上升子序列的长度。

模板代码:

int dp[MAX_N], a[MAX_N], n;
int ans = 0;  // 保存最大值

for (int i = 1; i <= n; ++i) {
    dp[i] = 1;
    for (int j = 1; j < i; ++j) {
        if (a[j] < a[i]) {
            dp[i] = max(dp[i], dp[j] + 1);
        }
    }
    ans = max(ans, dp[i]);
}

cout << ans << endl;  // ans 就是最终结果

以上是关于动态规划模板1|LIS最长上升子序列的主要内容,如果未能解决你的问题,请参考以下文章

模板求最长不下降序列 [动态规划 LIs]

最长上升子序列(LIS)动态规划

LIS 最长上升子序列问题(动态规划贪心+二分)

LIS 最长上升子序列问题(动态规划贪心+二分)

动态规划解决最长上升子序列LIS避坑

动态规划-最长上升子序列(LIS)