码迷,mamicode.com
首页 > 其他好文 > 详细

PAT-1007 Maximum Subsequence Sum

时间:2020-12-18 12:36:16      阅读:2      评论:0      收藏:0      [点我收藏+]

标签:size   ios   +=   main   ons   scanf   连续   for   起点   

题目:

技术图片

 

题目大意:

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

思路:

用贪心的做法,从第一个开始,累加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;
}

 

PAT-1007 Maximum Subsequence Sum

标签:size   ios   +=   main   ons   scanf   连续   for   起点   

原文地址:https://www.cnblogs.com/ljxdtc666/p/14128457.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!