最长上升子序列

不是连续子串

#include<bits/stdc++.h>
using namespace std;

int a[1005], dp[1005];

int main(){
    int n;
    cin >> n;
    for(int i = 1; i <= n; i ++ ) cin >> a[i];
    
    int cnt = 0;
    for(int i = 1; i <= n; i ++ ){
        dp[i] = 1;
        for(int j = 1; j < i; j ++ ){
            if(a[i] > a[j])
                dp[i] = max(dp[i], dp[j] + 1);
        }
        cnt = max(cnt, dp[i]);
    }
    cout << cnt;
    return 0;
}

对于每个 i ,先dp[ i ]下标初始化 1 ,与每个小于 i 下标 的 j 比较,a[ i ] > a[ j ]时,更新dp[ i ]。

 

 
posted @ 2021-04-05 20:51  acwarming  阅读(36)  评论(0编辑  收藏  举报