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;
}
目录
相关文章
【动态规划刷题 15】最长定差子序列&& 最长的斐波那契子序列的长度
【动态规划刷题 15】最长定差子序列&& 最长的斐波那契子序列的长度
|
3月前
|
算法
动态规划算法学习二:最长公共子序列
这篇文章介绍了如何使用动态规划算法解决最长公共子序列(LCS)问题,包括问题描述、最优子结构性质、状态表示、状态递归方程、计算最优值的方法,以及具体的代码实现。
208 0
动态规划算法学习二:最长公共子序列
|
算法 程序员 C#
C++二分查找算法的应用:最长递增子序列
C++二分查找算法的应用:最长递增子序列
|
8月前
|
算法 程序员 索引
【算法训练-动态规划 三】【双序列DP问题】最长重复子数组、最长公共子串、最长公共子序列、编辑距离
【算法训练-动态规划 三】【双序列DP问题】最长重复子数组、最长公共子串、最长公共子序列、编辑距离
134 0
|
8月前
|
算法 程序员
【算法训练-动态规划 二】【线性DP问题】连续子数组的最大和、乘积最大子数组、最长递增子序列
【算法训练-动态规划 二】【线性DP问题】连续子数组的最大和、乘积最大子数组、最长递增子序列
126 0
|
算法 Java C++
动态规划专题 最长上升序列模型 acwing 1016.最大上升子序列和
动态规划专题 最长上升序列模型 acwing 1016.最大上升子序列和
56 0
动态规划专题 最长上升序列模型 acwing 1016.最大上升子序列和
Acwing 3692. 最长连续公共子序列
Acwing 3692. 最长连续公共子序列
69 0
|
算法 Java C++
最长上升序列模型 acwing 1016.最大上升子序列和
最长上升序列模型 acwing 1016.最大上升子序列和
55 0
深入理解动态规划算法 - 最长公共子序列
深入理解动态规划算法 - 最长公共子序列
83 0
|
算法
LeetCode 周赛 347(2023/05/28)二维空间上的 LIS 最长递增子序列问题
这场周赛是 LeetCode 第 347 场单周赛,T4 是结合 LIS 最长递增子序列的动态规划问题。
87 0