這裡只紀錄一下函式的思想:
運用遞迴的思想,先後掃瞄左邊最大值,右邊最大值,和跨中點最大值,比較...
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在內的很多知名公司都把本題當作面試題。由於本...