01 複雜度1 最大子列和問題

2021-08-19 00:23:33 字數 1063 閱讀 7787

#includeusing namespace std;

int main()

for (i=0; itemp)

}} cout《空間複雜度為o(n³);較容易理解.

#includeusing namespace std;

int main()

for (i=0; i空間複雜度為o(n²);

***分而治之

intmax3( 

inta, 

intb, 

intc )

intdivideandconquer( 

intlist, 

intleft, 

intright )

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

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( 

intlist, 

intn )

分治法;

空間複雜度為o(nlogn)

01 複雜度1 最大子列和問題

給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。輸入格式 輸入第1行給出正整數 k 100000 第2行給出k個整數,其間以空格分隔。輸出格式...

01 複雜度1 最大子列和問題

01 複雜度1 最大子列和問題 給定k 個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。輸入第1行給出正整數k 100 000 第2行給出 k個整數...

01 複雜度1 最大子列和問題

01 複雜度1最大子列和問題 20分 給定kk 個整數組成的序列,連續子列 被定義為n i 1 n jn j 其中 1 le i le j le k1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列...