#include <stdio.h>
#include <stdlib.h>
#define N 10000
int main(void) {
int arr[N];
int n, i = 0;
int *a = arr;
int sum = 0, temp = 0;
int b = 0, e = 0, begin, end;
scanf("%d", &n);
while (i < n && scanf("%d", a + i) == 1)
++i;
begin = 0;
end = n - 1;
for (i = 0; i < n; ++i) {
if (temp >= 0) {
temp += *(a + i);
e = i;
}
else {
temp = *(a + i);
b = i;
e = i;
}
if (temp > sum || (temp == 0 && end == n - 1)) {
sum = temp;
begin = b;
end = e;
}
//sum仍是初始狀態(end == k-1)且temp==0也需要替換
}
printf("%d %d %d", sum, *(a + begin), *(a + end));
return 0;
}
//0 0 0 2 3 4
//-1 0 -1
//-2 -1 1 -2
01-複雜度2 Maximum Subsequence Sum (25分)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.