文章

166

粉丝

68

获赞

829

访问

51.4k

头像
最大序列和 题解:dp思路
P1172 清华大学/兰州大学机试题
发布于2025年1月27日 12:46
阅读数 556

#include <bits/stdc++.h>
using namespace std;

int main(){
    int n;
    while(cin>>n){
        vector<long long>a(n) ;
        for(int i=0;i<n;i++)cin>>a[i];
        long long max=a[0];
        for(int i=1;i<n;i++){
            if(a[i-1]>0) a[i]+=a[i-1];
            if(a[i]>max) max=a[i];
        }
        cout << max << endl;
    }
}

我们要求连续子序列最大和,只需要扫描这个数组,不断地更新当前序列和的最佳状态即可。对于最佳状态的判定,其实很简单,我们只需要知道前方的序列和是否大于0即可,大于0对于本次的就是有增长的,不需要分析当前数值的值,而是分析前面的序列状态,我们的目标是对于本次来说是否增长。

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发