HDU 1559 最大子矩陣

2021-09-19 13:28:22 字數 959 閱讀 2924

傳送門

水題(基本上不能算dp了,就是乙個用累加和求區間和(二維版)的思想)。時間複雜度o(n^2)。

hdu 1081才是真正的「最大子矩陣和」(最大子串和的二維版)。時間複雜度o(n^3)。

因為給定了子矩陣的行數,所以真的不用再來兩層迴圈確定頂行底行了。。。然後還是將之視為一行(每列的累加和)。而且子矩陣的列數也給了,那就對這一行再來一遍累加,然後列舉m-y+1次就完事了。

這種題還可以這麼出:給定子矩陣行數,不限制列數。(可以用最大子串和了,時間複雜度還是o(n^2))

#include

#include

#include

#include

#include

#include

#include

using namespace std;

// 這題還是dp嗎?(17.6.5) 算吧(19.4.23)

int n, m, x, y, t;

int sum[

1000][

1000];

// 每行每個元素的當前列累加和(從第一行累加到當前行),輸入時同步進行

int dp[

1000];

// 確定好頂行和底行後,將之視為一行,對該行每個元素累加(從第一列累加到當前列)

int ans;

void

init()

intmain()

}for

(int i = x; i <= n; i++

)// 因為子矩陣的行數給定!所以只需要列舉出來底行

printf

("%d\n"

, ans)

;// 所以這道題並沒有用最大子串和的思想。(也用不上)

}return0;

}

hdu 1559最大子矩陣

一直很少練dp 這幾天再學學 在本題中 a i j 的值表示左上角為 1,1 右下角為 i,j 的矩陣的所有元素之和 給你乙個m n的整數矩陣,在上面找乙個x y的子矩陣,使子矩陣中所有元素的和最大。input 輸入資料的第一行為乙個正整數t,表示有t組測試資料。每一組測試資料的第一行為四個正整數m...

hdu1559(最大子矩陣)

problem description 給你乙個m n的整數矩陣,在上面找乙個x y的子矩陣,使子矩陣中所有元素的和最大。input 輸入資料的第一行為乙個正整數t,表示有t組測試資料。每一組測試資料的第一行為四個正整數m,n,x,y 0 output 對於每組資料,輸出乙個整數,表示子矩陣的最大和...

hdu1559 最大子矩陣

problem description 給你乙個m n的整數矩陣,在上面找乙個x y的子矩陣,使子矩陣中所有元素的和最大。input 輸入資料的第一行為乙個正整數t,表示有t組測試資料。每一組測試資料的第一行為四個正整數m,n,x,y 0 m,n 1000 and 0 x m and 0 y n 表...