題意理解
求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,肯定不能構成正方形 ...