1914 - 最大连续和

给定一列数字A1,A2,A3...,An。求序列中一段连续的数字,使得它们的和最大。保证数字个数N≤1000,|Ai|≤10000

题目输入

对于每组数据,第一行是正整数N,描述数字的个数。第二行有N个数字,按一定的顺序给出。输入以N=0结束。

题目输出

对于每组数据,输出最大连续和。

输入/输出样例

题目输入

3
-1 1 0
5
1 2 3 4 -5
0

题目输出

1
10

C++解答

#include <iostream>
using namespace std;
int b[1005], a[1005];
const int INF = 1000000000;
int main(){
    int n, MAX;
    while(cin >> n && n){
      b[0] = 0;
      MAX = -INF;
      for(int i = 1; i <= n; ++i){
        cin >> a[i];
        b[i] = a[i]+b[i-1];
      }
      for(int i = 0; i < n; ++i)
        for(int j = i+1; j <= n; ++j)
          if(b[j]-b[i] > MAX)
            MAX = b[j]-b[i];
      cout << MAX << endl;
    }
    return 0;
}

时间限制 5 秒
内存限制 128 MB
讨论 统计
上一题 下一题