其实就是最大上升子序列的长度
集合:从第1个到第i个为止的依次增大的箱子高度的最大长度;
f[i]初始化为1 ,表示以自己为开头的序列。
f[j]表示i以前的最长的序列,这里我们直接遍历一遍。
f[i]=max(f[i],f[j]+1);
#include<iostream>
using namespace std;
int n;
const int M=510;
int a[M],f[M];
int main()
{
cin>>n;
for (int i=1;i<=n;i++) scanf("%d",&a[i]);
for (int i=1;i<=n;i++) f[i]=1; //初始化//
int ans=-2e9;
for (int i=2;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if (a[i]>a[j]) f[i]=max(f[i],f[j]+1); //转移方程//
ans=max(ans,f[i]); //找最大值//
}
}
cout<<ans<<endl;
}
ooooooook