最长上升子序列

来源:互联网 发布:淘宝店铺转让出售 编辑:程序博客网 时间:2024/06/14 00:11

问题描述

一个数的序列ai,当a1 < a2 < … < aS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1 <= i1

#include <iostream>#include <algorithm>using namespace std;const int MAX = 1010;int Num[MAX];int MaxLen[MAX];bool cmp(int a , int b){    return a>b;}int Max(int a ,int b){    return (a > b) ? a : b; } int main(){    int len;    cin>>len;    for(int i = 1 ; i <= len ; i++){        cin>>Num[i];        MaxLen[i] = 1;    }    for ( int i = 2 ; i <= len ; i++){        for ( int j = 1 ; j < i ; j++){            if ( Num[i] > Num[j]){                MaxLen[i] = Max(MaxLen[i],MaxLen[j]+1);             }         }    }    sort(MaxLen,MaxLen+len+1,cmp);    cout<<endl<<MaxLen[0];     return 0; } 
1 0
原创粉丝点击