codevs 1576 最长严格上升子序列

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

#include<bits/stdc++.h>
int a[100005][3],cnt,mx,n;
bool b[100005];
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i][1]);
        a[i][2]=1;
    }
    for(int i=n;i>=1;i--){
        int l=0,k=0;
        for(int j=i+1;j<=n;j++){
            if(a[i][1]<a[j][1] && a[j][2]>l){
                l=a[j][2];
                k=j;
            }
        }
        if(l>0){
            a[i][2]=l+1;
            a[i][3]=k;
        }
    }
    for(int i=1;i<=n;i++){
        if(a[i][2]>mx)
            mx=a[i][2];
    }
    printf("%d\n",mx);
}
posted @ 2017-12-02 20:48  Monster_Qi  阅读(215)  评论(0编辑  收藏  举报