f[n]表示从w[0]开始,以w[n]为结尾的数的最大子序列
转移方程:f[i] = max(f[i],f[j]+1) 0=<j<i
#include <cstdio>
#include <algorithm>
const int maxn = 1e3+10;
int w[maxn],f[maxn];
int main()
{
int n;
scanf("%d",&n);
for(int i = 0;i < n;i++) scanf("%d",&w[i]);
int mx = 1;
for(int i = 0;i < n;i++)
{
f[i] = 1;
for(int j = 0;j < i;j++)
if(w[j] < w[i])
{
f[i] = std::max(f[i],f[j]+1);
mx = std::max(f[i],mx);
}
}
printf("%d\n",mx);
return 0;
}