题目1527:首尾相连数组的最大子数组和

来源:互联网 发布:人工智能的概念 编辑:程序博客网 时间:2024/06/10 03:13

首尾相连的最大子数组和,求出连续的最大子数组和和最小的子数组和,取其中最大子数组和和总和减去最小子数组和的最大值即为所求。

题目地址:点击打开链接

C++代码:

////  1527.cpp//  九度练习题////  Created by leizh007 on 15/7/13.//  Copyright (c) 2015年 leizh007. All rights reserved.//#include <iostream>#include <algorithm>using namespace std;const int maxSize = 100001;int data[maxSize];int n;void run() {    int maxSum=0,minSum=0;    int ma=0,mi=0;    int sum=0;    for (int i=0; i<n; ++i) {        sum+=data[i];        maxSum+=data[i];        minSum+=data[i];        ma=max(ma,maxSum);        mi=min(mi,minSum);        maxSum=maxSum<0?0:maxSum;        minSum=minSum>0?0:minSum;    }    if (ma>sum-mi) {        cout<<ma<<endl;    }else{        cout<<sum-mi<<endl;    }}int main() {    while (cin>>n) {        for (int i=0; i<n; ++i) {            cin>>data[i];        }        run();    }    return 0;}


0 0