文章
121
粉丝
68
获赞
94
访问
20.3k
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
std::vector<int> a(n),b(n);
for(int i=0;i<n;i++){
cin>>a[i];
b[i]=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]+a[i]);
}
ans=max(ans,b[i]);
}
cout<<ans<<endl;
}
}
数组a存储数据内容,用于判断,b存储到该位置的最大子序列和,但是不包含该位置,所以我们只需要扫描求和即可得到结果。b存储的结构设计来源为:我每次都选择递增情况下的前者的所有的数组都进行一次测试,最低,这个状态会取离散本值,如果有更高的,他会叠加得到更大的值。
登录后发布评论
暂无评论,来抢沙发