動態規劃解221 Maximal Square

2021-08-12 00:13:40 字數 1085 閱讀 8674

given a 2d binary matrix filled with 0』s and 1』s, find the largest square containing only 1』s and return its area.

for example, given the following matrix:

1 0 1 0 0

1 0 1 1 1

1 1 1 1 1

1 0 0 1 0

return 4.

給定乙個矩陣,求其中由』1』組成的正方形最大面積,從給出的矩陣來看,組成的最大正方形為m[1][2], m[1][3], m[2][2], m[2][3], 因此最大面積為4

這是一道動態規劃的題目,假設result[i][j]表示當前第i行第i列能得到最大正方形的邊長。則當matrix[i][j]為』0』時,result[i][j]= 0,當matrix[i][j]為』1』時,則要考慮它是否能擴大之前的正方形,因此需要觀察它的左邊,它的上邊,以及它的左上邊,因此它的遞推式為:

result[i][j] = min(result[i-1][j-1], min(result[i-1][j], result[i][j-1])) + 1

根據遞推式遍歷整個matrix,就得到result集合,使用乙個res去記錄最大正方形的邊長,最後返回res*res則是答案

class solution 

int col = matrix[0].size();

vector

> result;

for (int i = 0; i < row; ++i)

}int res = 0;

for (int i = 0; i < col; ++i)

}for (int j = 0; j < row; ++j)

}for (int i = 1; i < row; ++i) else else

if (result[i][j] > res) res = result[i][j];}}

}return res*res;

}};

221 最大正方形 動態規劃

題目描述 在乙個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。示例 輸入 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 輸出 4 方法1 動態規劃 主要思路 1 該方法的實現比較簡單,主要是能夠理解動態轉移公式 dp i j min ...

221 最大正方形(動態規劃

在乙個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。上班之餘還是要保持穩定的刷題習慣。做完本題後回憶了四道dp的題 爬樓梯,打家劫舍,最短路徑和,最大正方形。發現動態規劃思考量最大的還是動態轉移方程 1.本題的關鍵點就是想通,狀態轉移方程,dp i j min dp ...

動態規劃解整數劃分

演算法思路 n n1 n2 n3 n4 nk n1 n2 n3 nk 從大到小排列後,可以避免陷入數值大小排序順序的困境中。這樣,在下面的過程,我們可以並不關心數值大小的排列,只關心組合方案數。狀態表示 將最大加數n1不大於m的劃分個數記作q n,m 狀態轉移 1 q n,1 1,n 1 當最大加數...