再写一遍,加深印象。
#include <stdio.h> int main() { int n; int i; int k[10000]; int flag; while (EOF != scanf("%d", &n) && n) { int nowLeft, nowRight, left, right, nowValue, max; nowLeft = nowRight = left = right = 1; flag = 0; nowValue = 0; max = -1; for (i = 1; i <= n; i++) { scanf("%d", &k[i]); if (k[i] >= 0) flag = 1; nowValue += k[i]; nowRight = i; if (max < nowValue) { max = nowValue; left = nowLeft; right = nowRight; } if (nowValue < 0) { nowValue = 0; nowLeft = nowRight = i + 1; } } if (!flag) { left = 1; right = n; max = 0; } printf("%d %d %d\n", max, k[left], k[right]); } return 0; }