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; }