大致题意:求最长升子序列。
f[i]:前i+1个元素中包括第i+1个的最长升子序列。
// Time 32ms; Memory 224K
#include<iostream>
using namespace std;
int main()
{
int i,j,n,a[1010],f[1010],max;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
f[0]=1;
for(i=1;i<n;i++)
{
f[i]=1;
for(j=0;j<i;j++) if(a[i]>a[j] && f[i]<=f[j])
{
f[i]=f[j]+1;
}
}
max=0;
for(i=0;i<n;i++) if(max<f[i]) max=f[i];
cout<<max<<endl;
return 0;
}