求最大子串行問題

2021-09-26 08:23:09 字數 462 閱讀 1912

輸入乙個整形陣列,陣列有正數也有負數,陣列中乙個或連續的多個整數組成乙個子陣列,求所有子陣列的和的最大值。時間複雜度為o(n).

剛開始想到的是暴力法,用三個迴圈,但是太費時了。之後想到如果一段子陣列的和為0或者小於0,那肯定不會有這段陣列。用動態規劃聽簡單,就是剛開始自己沒想全。用issum記錄當前子串行的和,sum是最大子串行的和。

例如 1, -2, 3, 10, -4, 7, 2, -5

issum 1, -1, 3, 13, 9, 16, 18, 13

sum 1, 1,3, 13, 13, 16, 18, 18

public class lianxi 

return sum;

}public static void main(stringargs);

system.out.println(fin(arr));

}}

求最大子串行問題

1.所謂最大子串行問題,就是希望在給定的陣列中,找出一串子串行,使得子串行的和最大。這個題目必須在字串裡存在負數,才有意義,否則直接取整個字串便是答案。13 3 2520 316 2318 20 7 12 5 2215 47 如上例子,塗色部分便是最大子串行,和為43 這道題這邊有三種思路。暴力破解...

求最大子串行

1.暴力求解,時間複雜度為n 3 int maxsubarray int a int n return maxsum 2.分治法 將陣列從中間分開,那麼最大子陣列要麼完全再左半邊陣列,要麼完全在右半邊陣列,要麼跨立在分界點上。完全在左陣列 右陣列遞迴解決。跨立在分界點上 實際上是左陣列的最大字尾和右...

求序列的最大子串行

看 程式設計珠璣 一書,講解求序列的最大子串行。問題 給定乙個實數序列x1,x2,xn 不必是正數 尋找乙個連續的子串行xi,x i 1 xj,使得其數值之和在所有連續子串行數值之和中是最大的。演算法1思路 比較所有連續序列數值的和,找到最大的。1.maxsofar 0 2.for i 0,n 3....