求陣列的子陣列之和的最大值

2021-06-16 05:39:02 字數 484 閱讀 4046

本題的要求顯然是o(n)級的複雜度咯

結合書上的分析,可以發現如下條件:

從陣列右邊像左遍歷,當前下標為i,那麼最大值有3中情形:

1. 最大值為array[i];

2. 最大值為array[i] + maxsuminclude;

3. 最大值為不包括array[i]的maxsumexclude;

最後返回最大值: max(maxsuminclude, maxsumexclude);

相應**如下:

是不是還可以實現得更優雅一點呢,這也就是程式設計之美給出的演算法了:

all[0] = max;

a[0]表示第1個元素

start[1]表示包含元素a[1]的連續最大子陣列和

all[1]表示max(start[1], all[2]);

實際上start[1]對應maxsuminclude,all[2]對應的是maxsumexclude

所以相應**如下:

求陣列的子陣列之和最大值

題目 乙個有n個整數元素的一維陣列a 0.n 1 這個陣列當然有很多子陣列,那麼子陣列之和最大值是多少?解答 求子陣列之和最大,這裡是連續的子陣列,如果乙個數為負數,陣列之和會減少,記住最大值,只要陣列之和沒有小於0就可以繼續累加,比如,3到 1子陣列之和減小了,但是沒有小於0,可以繼續累加下乙個數...

求陣列的子陣列之和的最大值

乙個有n個整數元素的一維陣列 a 0 a 1 a n 2 a n 1 這個陣列當然有很多子陣列,那麼子陣列之和的最大值是什麼呢?下面將給出3種解法的 解法一 int max maxsum1 int a,int n return maxnum 分析 該演算法的複雜度為o n2 解法二 思路 我們考慮陣...

求陣列的子陣列之和的最大值

乙個有n個整數元素的一維陣列 a 0 a 1 a n 2 a n 1 子陣列之和的最大值是什麼?要求子陣列的元素是連續的 例子 有陣列 2,5,3,6,4,8,6 則其子陣列之和的最大值為8,其對應的陣列為 5,3 解法一 採用直接法 記sum i.j 為陣列a中從第i到第j之間所有數之和,算出所有...