PAT-1007 Maximum Subsequence Sum

时间:2020-12-18 12:36:16   收藏:0   阅读:2

题目:

技术图片

 

题目大意:

在数组中寻找和最大的一段连续的序列

思路:

用贪心的做法,从第一个开始,累加a[i],如果sum<0就把这一段给舍去掉,从新的起点开始,如果sum>max,则进行信息的更新

#include <iostream>

using namespace std;
const int MAXN = 2e5+5;
const int INF = 0x7fffffff;
int a[MAXN];
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    int sum=0,l=0,r=0,max_=-INF,l_=0;
    for(int i=0;i<n;i++){
        sum+=a[i];
        if(sum>max_){
            max_=sum;r=i;l_=l;
        }
        if(sum<0){
            sum=0,l=i+1;
        }
    }
    if(max_<0){
        cout<<"0"<<" "<<a[0]<<" "<<a[n-1]<<endl;
    } else {
        cout<<max_<<" "<<a[l_]<<" "<<a[r]<<endl;
    }

    return 0;
}

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!