//
// Created by CyIce on 2021/1/30.
//
//最大连续子序列和
#include <stdio.h>
const int MAXN = 10010;
int N, A[MAXN], dp[MAXN], S[MAXN];
int main() {
int index;
scanf("%d", &N);
while (N != 0) {
for (int i = 0; i < N; ++i) {
scanf("%d", &A[i]);
}
dp[0] = A[0];
index = 0;
S[0] = 0;
for (int i = 1; i < N; ++i) {
if (A[i] > dp[i - 1] + A[i]) {
dp[i] = A[i];
S[i] = A[i];
if (dp[i] > dp[index]) {
index = i;
}
} else {
dp[i] = dp[i - 1] + A[i];
S[i] = S[i - 1];
if (dp[i] > dp[index]) {
index = i;
}
}
}
if (dp[index] < 0) {
printf("%d %d %d\n", 0, A[0], A[N - 1]);
} else {
printf("%d %d %d\n", dp[index], S[index], A[index]);
}
scanf("%d", &N);
}
return 0;
}
问题 A: 最大连续子序列
最新推荐文章于 2021-03-18 22:11:43 发布