•方法一:雙指標
i,j滿足
i每次對
[i,j
]區間求和找出最大的值,複雜度是
o(n^2)
#include#include#define n 1000000
int main()
for (i = 0; i < n; i++)
}} printf("%d %d %d\n", sum, a[tempi], a[tempj]);
}
•方法二:分治法,分為左中右三部分,利用歸併的方法求解
o(nlogn
)
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 )
int maxsubseqsum4( int a, int n )
return maxsum;
}
最大子列和問題(C語言 分治演算法)
最大子列和問題 maximum subsequence sum 給定k個整數組成的序列,連續子列 被定義為 ni 1 n jn j nj 其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和11。現要求你編寫程式,計算給定整數序列的最大子列和。...
演算法 最大子列和問題
浙江大學 資料結構 思考題 每週練習答案彙總 題目 給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況...
最大子列和問題(C語言實現)
最大子列和問題 pta 程式設計類實驗輔助教學平台 給定k 個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情...