问题描述
给定一个整数序列,在其中找出连续的一段,使得这段连续子序列的和最大。
输入描述:
第一行一个整数n (1 ≤ n ≤ 2000),表示给定整数序列的长度。
第二行n个整数,用空格间隔,表示该序列。
输出描述:
一行一个整数,表示最大连续子序列的和。
代码
#include <iostream>
#define N 2010
using namespace std;
int a[N], sum[N];
int main() {
int n, ans = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
sum[i] = sum[i - 1] + a[i];
}
for (int i = 1; i <= n; i++)
for (int j = 0; j < i; j++)
ans = max(sum[i] - sum[j], ans);
cout << ans << endl;
return 0;
}