和序列中無長度限制的最大子段和相同,如果當前的sum>0,那麼它還有一定的價值,所以繼續往上累加;如果當前sum<0,即sum不僅沒有價值,反而會使後面的和更小,所以將sum重置為0為最優。
矩陣中維護每一列上的字首和,列舉所選矩陣上限i,下限j,列舉列數k,重複上述過程,記錄整個過程中的最大值即為答案。
ac**:
1 #include2 #include3 #include4ac**using
namespace
std;
5const
int n=105;6
intn,maxx;
7int
a[n][n];
8int
main()
17int sum=0
;18 maxx=0;19
for(int i=1;i<=n;i++)
20for(int j=i;j<=n;j++)28}
29 printf("
%d\n
",maxx);30}
31return0;
32 }
POJ 1050 To the max 最大子矩陣
題目大意 給定乙個n階方陣 1 n 100 其元素的取值範圍為 127,127 求其中的乙個m p維子矩陣 1 m 100,1 p 100 要求使該子矩陣中元素的和最大。求最大子矩陣,大一的時候乙個作業即是這個題目,忘了當時怎麼寫的了,重寫一遍。首先求一維陣列的最大子段,也是dp問題。假設陣列arr...
POJ結題報告 1050 To the Max
題目描述 思路 這道題最基本和原始的方法是窮舉,但是窮舉是乙個o n 4 的演算法,題目中明確說明測試資料最大可能是100 100,窮舉會超出題目時間限制1000ms。而動態規劃是這道題解決的方法。首先子矩陣的和可以轉化為子矩陣中每一列先求和再將他們加起來,即 9 2 4 1 1 8 的和可以表示為...
poj 1050 動態規劃
題目 求最長序列的和的拓展,有一維拓展到二維,首先判斷每一行的最大值,然後記錄下最大的值,再將然後,把第i行後的各行對應列的元素加到第i行的對應列元素,每加一行,就求一次最大欄位和,這樣就把子矩陣的多行壓縮為一行了,一行了就是最大欄位和了啊!include include using namespa...