最大子列和問題(C語言實現)

2021-08-14 19:42:15 字數 1336 閱讀 1736

最大子列和問題(pta | 程式設計類實驗輔助教學平台  給定k

個整數組成的序列,「連續子列」被定義為,其中 1≤

i≤j≤

k。「最大子列和」則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。

本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試資料特點如下:

輸入第1行給出正整數k (

≤100

000);第2行給出

k個整數,其間以空格分隔。

在一行中輸出最大子列和。如果序列中所有整數皆為負數,則輸出0。

6

-2 11 -4 13 -5 -2

20
#include#define m 100005

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 main(void)

return maxsum;

}int main(void)

sum=maxsubseqsum4(c,k);

printf("%d\n",sum);

return 0;

}

PTA 7 1 最大子列和問題(C語言實現)

題目描述 給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試資料特點如下 資料1 與...

最大子陣列問題及C語言實現

對於乙個連續的陣列a n 要求連續子陣列,使得該子陣列的和最大。比如陣列,最大子陣列為,和為32。方法一 窮舉法。即將任取陣列中的兩個元素,算出兩者之間 包括這兩個元素本身 所有元素之和。窮舉所有組合,比較得到最大值。該方法複雜度為n的三次方。include include int sort int...

最大子矩陣 C語言實現

演算法核心 先將二維陣列處理為一維陣列,再對一維陣列進行最大連續子串行求和,這裡最大連續子串行求和採用的是遞推的方法。演算法步驟 1 將原矩陣初始化,並建立乙個臨時二維矩陣,該矩陣的第i行表示的是原矩陣前i行的和 2 採用窮舉的方法,計算二維矩陣所有可能的連續行的列的和,使其壓縮為一維陣列 3 對步...