Description:
给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。
Input:
输入有多组数据。每组数据第一行输入一个整数n(n<=10^6),第二行输入n个整数。n=0时程序结束。
Output:
每组数据输出一个答案。
Sample Input:
6
-2 11 -4 13 -5 -2
0
Sample Output:
20
#include "iostream"
#include "vector"
using namespace std;
/**
* 求最长字符字串和
* @return
*/
int main() {
int T;
while (cin >> T && T != 0) {
//装入
vector<int> vector(1000000);
for (int i = 0; i < T; ++i) {
cin >> vector[i];
}
//找最大字串和
long long max = vector[0];
for (int i = 0; i < T; ++i) {
long long sum = 0;
for (int j = i; j < T; ++j) {
sum += vector[j];
if (sum > max)
max = sum;
}
}
cout << max << endl;
}
return 0;
}