文章
166
粉丝
68
获赞
855
访问
60.4k
- #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存储的结构设计来源为:我每次都选择递增情况下的前者的所有的数组都进行一次测试,最低,这个状态会取离散本值,如果有更高的,他会叠加得到更大的值。
登录后发布评论
暂无评论,来抢沙发