乙個有n個整數元素的一維陣列(a[0],a[1],...,a[n-2],a[n-1]),這個陣列當然有很多子陣列,那麼子陣列之和的最大值是什麼呢?
下面將給出3種解法的**:
解法一:
int max::maxsum1(int *a,int n)
} return maxnum;
}
分析:該演算法的複雜度為o(n2)。
解法二:
思路:我們考慮陣列的最後乙個元素a[n-1](當然也可以從第乙個元素出發),以及前n-1項的和最大連續子陣列(a[i],...,a[j])跟a[n-1]之間的關係,有以下幾種情況:
1.等於a[n-1]。
2.以a[n-1]結尾。
3.與a[n-1]無關,即和最大連續子陣列為前n-1項的最大連續子陣列。
從上面的分析可以看出這個問題的無後效性,可以使用動態規劃的方法來解決。
int max::maxsum2(int *a,int n)//動態規劃
return maxnum;
}
演算法時間複雜度為o(n)。 求陣列的子陣列之和最大值
題目 乙個有n個整數元素的一維陣列a 0.n 1 這個陣列當然有很多子陣列,那麼子陣列之和最大值是多少?解答 求子陣列之和最大,這裡是連續的子陣列,如果乙個數為負數,陣列之和會減少,記住最大值,只要陣列之和沒有小於0就可以繼續累加,比如,3到 1子陣列之和減小了,但是沒有小於0,可以繼續累加下乙個數...
求陣列的子陣列之和的最大值
本題的要求顯然是o n 級的複雜度咯 結合書上的分析,可以發現如下條件 從陣列右邊像左遍歷,當前下標為i,那麼最大值有3中情形 1.最大值為array i 2.最大值為array i maxsuminclude 3.最大值為不包括array i 的maxsumexclude 最後返回最大值 max ...
求陣列的子陣列之和的最大值
乙個有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之間所有數之和,算出所有...