最长严格上升子序列

题目描述 Description
给一个数组a1, a2 … an,找到最长的上升降子序列ab1

(http://codevs.cn/problem/1576/)

#include 
#include 
using namespace std;

const int Max_N(5000);
int T;
int num[Max_N];
int dp[Max_N + 1];

void solve(){
    int ans(0);
    for(int i = 0; i < T; ++i){
        dp[i] = 1;
        for(int j = 0; j < i; ++j){
            if(num[i] > num[j])
                dp[i] = max(dp[i], dp[j] + 1);
        }
        ans = max(dp[i], ans);
    }
    printf("%d\n", ans);
}

int main(){
    scanf("%d", &T);
    for(int i = 0; i < T; ++i){
        scanf("%d", &num[i]);
    }
    solve();
    return 0;
}

你可能感兴趣的:(动态规划)