最長上升子序列(DP)

Description
一個數的序列bi,當b1< b2 < ... < bS的時候,我們稱這個序列是上升的。對於給定的一個序列(a1,a2,...,aN),我們可以得到一些上升的子序列(ai1, ai2, ..., aiK),這裏1<=i1  你的任務,就是對於給定的序列,求出最長上升子序列的長度。
Input
輸入的第一行是序列的長度N(1<=N<=1000)。第二行給出序列中的N個整數,這些整數的取值範圍都在0到10000。
Output
最長上升子序列的長度。
Sample Input
6
1 6 2 5 4 7
Sample Output
4



//特別簡單!!!


代碼:

#include<iostream>
using namespace std;
int a[1005],ans[1005],maxx=0;
int main()
{
int n,i,j;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a[i];
ans[i]=1;
for(j=1;j<i;j++)if(a[j]<a[i])ans[i]=max(ans[i],ans[j]+1);
maxx=max(maxx,ans[i]);
}
cout<<maxx<<endl;
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章