最大子段(陣)和

2022-07-30 05:27:11 字數 957 閱讀 9466

這是一道dp經典題(感覺什麼都經典)也是很常見的乙個題型,具體思路就是用sum記錄乙個字首和,從a[1]遍歷到a[n]每次,加上去,但是一旦sum成了負數,就沒必要字首和了,重新賦值0(因為前面就是累贅了)然後,就做出來了........

1 #include2

using

namespace

std;

3int

n,x,maxx,sum;

4int

main()

516 printf("%d"

,maxx);

17 }

學完了最大子段和後,該學最大子陣和了(欸嘿嘿)。對於求二維的這玩意兒,我們壓成一位就可以了。肯定會有人問,怎麼壓成一維?

康康這個樣例,我們列舉要選取的矩陣的寬度

(不要問我為什麼是豎著的,因為方便一些)

然後我們就把這兩豎行壓成一豎行

我知道豎著難受,但是....我懶得改了

然後我們用正規的最大子段和求就行了啦

至於這個壓行的操作,我們記錄乙個字首和,列舉區間左右邊界即可

1 #include2

using

namespace

std;

3int

n,ans;

4int mp[105][105];5

int qzh[105][105];6

intmain()

730 ans=max(ans,maxx);31}

32}33 cout

35 }

最大子段和與最大子陣和 動態規劃解法

在乙個陣列中找出和最大的連續幾個數。至少包含乙個數 例如 陣列a 2,1,3,4,1,2,1,5,4 則連續的子串行 4,1,2,1 有最大的和6.輸入格式 第一行輸入乙個不超過1000的整數n。第二行輸入n個整數a i 輸出格式 第一行輸出乙個整數,表示最大的和。include includeus...

最大子陣和

解題思路 首先,考慮一維的情況。a1,a2,a3,an的最大子串行和。我們維護乙個 最大字首和 當這個字首和小於0的時候,就替換為當前值,那麼最大值一定在這些字首和中。然後對於二維的情況,我們列舉可能的起始列標,這樣就是一維的最大子串行和的問題了。例如,當我們選定第一列和第三列後,把每一行第一列到第...

DP 最大子陣和

最大子陣和 description 有乙個包含正數和負數的二維陣列。乙個子矩陣是指在該二維陣列裡,任意相鄰的下標是1 1或更大的子陣列。乙個子矩陣的和是指該子矩陣中所有元素的和。本題中,把具有最大和的子矩陣稱為最大子矩陣。例如 0 2 7 0 9 2 6 2 4 1 4 1 1 8 0 2這個陣列的...