滚动数组。。。。。。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int n;
int a[10001],maxlen[10001];/*maxlen[i]表示以a[i]为终点的最长上升子序列长度*/
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
maxlen[i]=1;//初始化为1
}
for(int i=2;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if(a[i] > a[j])
maxlen[i]=max(maxlen[i], maxlen[j]+1);
//不能直接maxlen[i]=maxlen[j]+1
//因为有可能maxlen[j]+1并不比原来的manlen[i]大
}
}
//取maxlen[i]中的最大的值
int max=maxlen[1];
for(int i=2;i<=n;i++)
{
if(maxlen[i] > max)
max = maxlen[i];
}
cout<<max<<endl;
//system("pause");
}