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;
}
目录
相关文章
|
存储 人工智能
【动态规划】LIS最长上升子序列【入门】
【动态规划】LIS最长上升子序列【入门】
106 0
334. 递增的三元子序列 : 最长上升子序列(LIS)问题的贪心解运用题
334. 递增的三元子序列 : 最长上升子序列(LIS)问题的贪心解运用题
|
9月前
|
算法 程序员 索引
【算法训练-动态规划 三】【双序列DP问题】最长重复子数组、最长公共子串、最长公共子序列、编辑距离
【算法训练-动态规划 三】【双序列DP问题】最长重复子数组、最长公共子串、最长公共子序列、编辑距离
142 0
|
算法 BI Python
动态规划法(十)最长公共子序列(LCS)问题
问题介绍   给定一个序列X=X=X=,另一个序列Z=Z=Z=满足如下条件时称为X的子序列:存在一个严格递增的X的下标序列,对所有的j=1,2,...,kj=1,2,...,kj=1,2,...,k满足xij=zj.xij=zj.x_{i_j}=z_j.   给定两个序列XXX和YYY,如果ZZZ同时是XXX和YYY的子序列,则称ZZZ是XXX和YYY的公共子序列。
8419 0
|
算法 Java C++
最长上升序列模型 acwing 1016.最大上升子序列和
最长上升序列模型 acwing 1016.最大上升子序列和
60 0
|
算法 Java C++
动态规划专题 最长上升序列模型 acwing 1016.最大上升子序列和
动态规划专题 最长上升序列模型 acwing 1016.最大上升子序列和
58 0
动态规划专题 最长上升序列模型 acwing 1016.最大上升子序列和

热门文章

最新文章