1. 程式人生 > >動規最長上升子序列

動規最長上升子序列

#include<iostream>
#include<algorithm>
using namespace std;
#define maxx 101
int a[maxx];
int n;
int maxlen[maxx];

int main()
{
    int i,j;
    cin>>n;
    for(i=1;i<=n;++i){
        cin>>a[i];//陣列a存數
        maxlen[i]=1;//邊界條件,每個數最長子序列至少為一
    }


    for(i=2;i<=n;++i)
        for
(j=1;j<i;++j) { if(a[i]>a[j]) { maxlen[i]=max(maxlen[i],maxlen[j]+1);//存以第i個為終點的最長的個數 } } cout<<*max_element(maxlen+1,maxlen+n+1);//輸出陣列中最大的 return 0; }