#include <cstdio> int main() { int n, a[100001]; while (~scanf("%d", &n)) { int i; for (i = 1; i <= n; i++) scanf("%d", &a[i]); int sum = a[1], min = a[1]; // 初始值 for (i = 2; i <= n; i++) { if (sum <= 0) sum = a[i]; // 如果前面位置最大连续子序列和小于0, 就讲此时的位置的值记录下来 else sum += a[i]; // 如果大于0, 就继续相加。 if (sum > min) min = sum; } printf("%d\n", min); } return 0; }