最大子段和

2022-08-01 08:45:09 字數 667 閱讀 4080

題意:多組案例,每組案例給出給出一組字串,找出這組字串中連續子串的和的最大值。

輸入:首行輸入案例數,每個案例先輸入字串長度,再輸入字串。案例與案例間用空行間隔。

案例:sample input     

5 6 -1 5 4 -7

7 0 6 -1 1 -6 7 -5

sample oouput

case 1:14 1 4

case 2:7 1 6

分析:最大子串行即找出陣列中和最大的連續子串行。比如的最大子串行就是,它的和是8,達到最大;而的最大子串行是,它的最大和是6。只要前i項的和還沒有小於0則子串行就一直向後擴充套件,否則丟棄之前的子串行開始新的子串行,同時記下各個子串行的和,最後找到和最大的子串行。

源**:

1 #include2

int a[100010];3

intmain()422

if(sum<0)//

當前子串和值達負值,另尋子串比較

2327

}28 printf("

case %d:\n%d %d %d\n

",++cnt,count,l,r);

29if(t) printf("\n"

);30}31

return0;

32 }

最大子段和

設a 是n個整數的序列,稱為該序列的子串行,其中1 i j n.子串行的元素之和稱為a的子段和.例如,a 2,11,4,13,5,2 那麼它的子段和是 長度為1的子段和 2,11,4,13,5,2 長度為2的子段和 9,7,9,8,7 長度為3的子段和 5,20,4,6 長度為4的子段和 18,15...

最大子段和

問題表述 n個數 可能是負數 組成的序列a1,a2,an.求該序列 例如 序列 2,11,4,13,5,2 最大子段和 11 4 13 20。1 窮舉演算法 o n3 o n2 2 分治法 將序列a 1 n 從n 2處截成兩段 a 1 n 2 a n 2 1 n 例項 三 最大子段和 問題表述 n個...

最大子段和

再給頂的n個數的陣列中選出連續的若干個數,使得他們的和是最大的,即最大連續自序列和.列如.序列.1 2 3 1 6 5 9 結果 當取子串行 3,1,6,5,9 結果12 我的思路.1.最大連續子串行的開頭是在1.n之中.的最大連續和 2.求出以i,開頭的最大連續和,此時開頭已經確定了,那麼通過列舉...