這是一道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 #include2using
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這個陣列的...