文章
121
粉丝
68
获赞
94
访问
20.4k
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
std::vector<int> a(n),b(n,1);
for(int i=0;i<n;i++){
cin>>a[i];
}
int ans=b[0];
for(int i=1;i<n;i++){
for(int j=0;j<i;j++){
if(a[j]>=a[i])b[i]=max(b[i],b[j]+1);
}
ans=max(ans,b[i]);
}
cout<<ans<<endl;
}
}
对最大增长子序列进行修改,在基础问题中,b存储的是实际的高度,计算出来的就是高度长,如果我们全存1,就是当前的拦截最小个数,我们进行迭代,如果可以下降或平高拦截,就加一,并判断当前的拦截数量是否是最多,逐渐生成得到结果。
登录后发布评论
暂无评论,来抢沙发