OpenJudge2757:最長上升子序列

題目描述

http://bailian.openjudge.cn/practice/2757

題目思路

  • 最長遞增子序列
  • 非遞歸更好一些

代碼

#include <iostream>
using namespace std;
#define N 1001
int dp[N],a[N];
int main() {
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }   
    dp[0]=1;
    for(int i=1;i<n;i++){
        int tmax=1;
        for(int j=0;j<i;j++){
            if(a[i]>a[j]){
                tmax=dp[j]+1>tmax?dp[j]+1:tmax;
            }
        }
        dp[i]=tmax;

    }
    int res=1;
    for(int i=0;i<n;i++){
        res=dp[i]>res?dp[i]:res;
    }
    cout<<res<<endl;
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章