POJ 1050 To the Max(最大矩陣)

2022-04-06 18:09:33 字數 588 閱讀 8199

和序列中無長度限制的最大子段和相同,如果當前的sum>0,那麼它還有一定的價值,所以繼續往上累加;如果當前sum<0,即sum不僅沒有價值,反而會使後面的和更小,所以將sum重置為0為最優。

矩陣中維護每一列上的字首和,列舉所選矩陣上限i,下限j,列舉列數k,重複上述過程,記錄整個過程中的最大值即為答案。

ac**:

1 #include2 #include3 #include4

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 }

ac**

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...