最大连续子序列和
内存限制: 128 MiB 时间限制: 1000 ms 标准输入输出 题目类型: 传统 评测方式: 文本比较
题目描述
给定一个有 n(n ≥ 1)个整数的序列,要求求出其中最大连续子序列的和。
复制 例如:
序列(-2,11,-4,13,-5,-2)的最大子序列和为20
序列(-6,2,4,-7,5,3,2,-1,6,-9,10,-2)的最大子序列和为16。
规定一个序列最大连续子序列和至少是 0,如果小于 0,其结果为 0。
输入格式
第一行输入一个整数 n 第二行输入 n 个用空格分开的整数
输出格式
输出一个整数,表示这个序列的最大连续子序列的和
样例
样例输入1:
复制6
-2 11 -4 13 -5 -2
样例输出1:
复制20
样例输入2:
复制12
-6 2 4 -7 5 3 2 -1 6 -9 10 -2
样例输出2:
复制16
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
int n, ans;
int a[N];
int main() {
scanf("%d", &n);
for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
for(int i = 1; i <= n; i++) a[i] = max(a[i], a[i - 1] + a[i]), ans = max(a[i], ans);
printf("%d", ans);
return 0;
}
//很简洁吧