求最大連續子段和 的 dp演算法

2021-06-14 01:44:59 字數 386 閱讀 2434

問題描述:

有n個數(以下都視為整數,浮點的也一樣),每個數有正有負,現在要在n個數中選取相鄰的一段,使其和最大,輸出最大的和。

問題分析:

對於這樣的問題,我們可以直接用暴力,乙個雙重迴圈,雖說可以,但也沒有更高明的方法?  我們再分析這個問題,如果我們知道了某個數前面一段數的和,我們就該考慮把這個數加入到前一段,還是重新開始一段。這個地方很重要,如果前一段的和小於0,我們重新建一段,反之加到前一段。這樣我們就可以把n個數分成幾段了,且每一段都求出了他們的和,然後再迴圈一次求出最大的乙個和,我們就得到想要的結果了,也可以在分段的時候直接求結果。

**

int maxsub (int a)

return max;

}

DP 最大連續子段和

最大連續子段和 hdu 1003 1.問題描述 給定一串整數,例如 6 1 5 4 7,求最大連續子段和?2.演算法介紹 此題不能暴力,o n 2 的時間複雜度必然超時。考慮如下演算法 設mi表示前i個整數包含第i個整數的最大連續子段和。sum i,j 表示第i個整數到第j個整數的和,最大連續子段和...

最大連續子段和

最大連續子段和 給定長度為n的整數序列,a 1.n 求 1,n 某個子區間 i,j 使得a i a j 和最大,或者求出最大的這個和。例如 2,11,4,13,5,2 的最大子段和為20,所求子區間為 2,4 窮舉法 3次for迴圈 第1次for迴圈,遍歷陣列所有數字,即確定子段和的首個數字 第2次...

總結 最大連續子段和

給你乙個序列,讓你在其中找一段連續的子串行,使得這個連續的子串行的和是最大的。它實際上有點動態規劃的意思在裡面,設f i 表示以第i個數字作為結尾的連續子串行的和的最大可能值。則 f i max f i 1 a i a i 這裡的 f i 1 a i 實際上表示的就是,讓a i 和以a i 1 結尾...