分而治之 求子序列最大和

2021-07-22 19:29:42 字數 864 閱讀 9486

這裡只紀錄一下函式的思想:

運用遞迴的思想,先後掃瞄左邊最大值,右邊最大值,和跨中點最大值,比較...

int max3( int a, int b, int c )

int divideandconquer( int list, int left, int right )

/* 下面是"分"的過程 */

center = ( left + right ) / 2; /* 找到中分點 */

/* 遞迴求得兩邊子列的最大和 */

maxleftsum = divideandconquer( list, left, center );

maxrightsum = divideandconquer( list, center+1, right );

/* 下面求跨分界線的最大子列和 */

maxleftbordersum = 0; leftbordersum = 0;

for( i=center; i>=left; i-- ) /* 左邊掃瞄結束 */

maxrightbordersum = 0; rightbordersum = 0;

for( i=center+1; i<=right; i++ ) /* 右邊掃瞄結束 */

/* 下面返回"治"的結果 */

return max3( maxleftsum, maxrightsum, maxleftbordersum + maxrightbordersum );}

int maxsubseqsum3( int list, int n )

最簡求子序列最大和

已知給定序列a1,a2,a3 an,求a1 an的乙個子串行ai aj,使得ai到aj的和最大 public static int maxsub int sequeuece if sum 0 return max 此演算法時間複雜度為o n 整個演算法只對陣列進行一次掃瞄即可完成操作。從左到右掃瞄過...

求子陣列最大和

題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。因為是o n 的複雜度,...

求子陣列的最大和

題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 本題最初為2005年浙江大學計算機系的考研題的最後一道程式設計題,在2006年裡包括google在內的很多知名公司都把本題當作面試題。由於本...