LIS (最长递增子序列) 朴素版

简介: 笔记

8.png

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
#define mod 998244353
#define endl '\n'
using namespace std;
typedef long long LL;
typedef pair<int, int>PII;
const int N = 1010;
int n;
int dp[N], a[N];
// dp[i] 以第 i 个数结尾的上升子序列的最大长度
void solve() {
  cin >> n;
  for (int i = 1; i <= n; ++i)scanf("%d",a + i);
  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);
    }
  }
  int res = -INF;
  for (int i = 1; i <= n; ++i) {
    res = max(res, dp[i]);
  }
  cout << res << endl;
}
int main() {
  //int t; cin >> t;
  //while (t--)
    solve();
  return 0;
}
目录
相关文章
|
算法 JavaScript Go
【动态规划】最长递增子序列
【动态规划】最长递增子序列
|
5月前
|
算法 程序员 索引
【算法训练-动态规划 三】【双序列DP问题】最长重复子数组、最长公共子串、最长公共子序列、编辑距离
【算法训练-动态规划 三】【双序列DP问题】最长重复子数组、最长公共子串、最长公共子序列、编辑距离
91 0
|
12月前
|
算法
【学会动态规划】 最长递增子序列(26)
【学会动态规划】 最长递增子序列(26)
36 0
深入理解动态规划算法 | 最长公共子序列LCS
深入理解动态规划算法 | 最长公共子序列LCS
118 0
深入理解动态规划算法 - 最长公共子序列
深入理解动态规划算法 - 最长公共子序列
68 0
|
算法
LeetCode 周赛 347(2023/05/28)二维空间上的 LIS 最长递增子序列问题
这场周赛是 LeetCode 第 347 场单周赛,T4 是结合 LIS 最长递增子序列的动态规划问题。
79 0
|
存储 人工智能
【动态规划】LIS最长上升子序列【入门】
【动态规划】LIS最长上升子序列【入门】
93 0
334. 递增的三元子序列 : 最长上升子序列(LIS)问题的贪心解运用题
334. 递增的三元子序列 : 最长上升子序列(LIS)问题的贪心解运用题