d[i]表示下标为I的数前最大的子序列的长度。
结果是max{d[i]}
#include <iostream>
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
const int maxn = 1e4;
int d[maxn];
int a[1010];
int main()
{
int n;
int num;
while(cin>>n)
{
memset(d,-INF ,sizeof(d));
for(int i = 0; i<n; i++)
{
cin>>num;
a[i] = num;
d[i] = 1;
}
for(int i = 1; i<n; i++)
{
int & ans = d[i];
num = a[i];
for(int j = i-1; j>=0; j--)
{
if(a[j]<num)
{
ans = max(ans,d[j]+1);
}
}
}
num = d[0];
for(int i = 0;i<n;i++)
{
num = max(num,d[i]);
}
cout<<num<<endl;
}
return 0;
}