221 最大正方形 力扣

2021-09-24 17:19:33 字數 676 閱讀 1500

題意理解

求m×n矩陣中,每個元素取值只有0,1,求元素1組成的最大正方形面積

問題分析

用動規狀態量:以每個元素為右下角的矩陣的最大邊長

轉移方程:對於a[i][j],  dp[i][j] = min(dp[i-1][j], dp[i][j-1],dp[i-1][j-1]) + 1;表示對於每個非0的矩陣元素,計算它相鄰的左元素,上元素和左對角線對應的最大邊長的最小值 + 1。

其他動規很有用。這是經典題。

0805:忘記了只考慮等於1的情況,忘記了求的是面積,而dp是邊長,忘記了求最大值,而不是最後乙個值。

鏈結

int maximalsquare(vector>& matrix) ;

for (int i = 0; i != m; i ++) //初始化第一列

for (int j = 0; j != n; j ++) //初始化第一行

cout << "m n " << m << '\t' << n << endl;

for (int i = 1; i != m; i ++)}}

int max = 0;

for (int i = 0; i != m; i ++) //取最大值

}return max * max; //邊長平方等於面積

}

力扣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 原題url 這道題應該很快會讓我們想起使用動態規劃,從左上角...

力扣解題思路 221 最大正方形

思路 在乙個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。輸入 matrix 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 輸出 4每當看到這種正方形或者矩形的題目,都會形成一種本能的反應,就是找到兩個點,即左上和右下頂點,因為固定這...

221 最大正方形

在乙個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。輸入 1 0 1 0 0 1 01 11 1 11 11 1 0 0 1 0輸出 4動態規劃。1 狀態方程dp i j 表示右下角下標為 i,j 時的最大正方形邊長。當遇到0時,dp i j 0,肯定不能構成正方形 ...