01-複雜度2 Maximum Subsequence Sum (25分)


#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


發佈了35 篇原創文章 · 獲贊 12 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章