文章

121

粉丝

68

获赞

94

访问

20.3k

头像
最大上升子序列和 题解:最长子序列和求解
P1257 北京大学机试题
发布于2025年2月5日 16:38
阅读数 101

#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存储的结构设计来源为:我每次都选择递增情况下的前者的所有的数组都进行一次测试,最低,这个状态会取离散本值,如果有更高的,他会叠加得到更大的值。

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发