題目描述:
輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。
求所有子陣列的和的最大值,要求時間複雜度為o(n)。
例如輸入的陣列為`1, -2, 3, 10, -4, 7, 2, -5`,和最大的子陣列為`3, 10, -4, 7, 2`,
因此輸出為該子陣列的和18。
思路:採用貪婪法求解即可
#include #include /*題目描述:
輸入乙個整形陣列,陣列裡有正數也有負數。
陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。
求所有子陣列的和的最大值,要求時間複雜度為o(n)。
思路:採用貪婪法即可
*/int getsubmaxsum(int *a, int n)
if (tmp < 0)
} return sum;
}int main()
; int sum = getsubmaxsum(a, 8);
printf("%d\n", sum);
return 0;
}
最大連續子陣列和
輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值,要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。第乙個想法肯定就是如果能夠把陣...
最大連續子陣列和
給定乙個整數陣列,元素的值有正有負。定義 連續子陣列和 為連續幾個陣列的元素的和,求最大的連續子陣列和。已知這個值在int能夠表示的範圍內。無腦暴力做就是列舉所有的子陣列,o n 2 然後對於每個子陣列求和,自然就找出最大的了,複雜度總共是o n 3 能否優化?想想 做了重複多餘的事情了?沒錯,就是...
最大連續子陣列和
問題是這樣的 乙個整數陣列中的元素有正有負,在該陣列中找出乙個連續子陣列,要求該連續子陣列中各元素的和最大,這個連續子陣列便被稱作最大連續子陣列。比如陣列的最大連續子陣列為,最大連續子陣列的和為5 2 1 2 8。下面按照時間複雜度逐步優化的順序依次給出這三種演算法。該方法的思想非常簡單,先找出從第...