最长上升子序列(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;
}

猜你喜欢

转载自blog.csdn.net/niuniu0205/article/details/80413136