221最大正方形(動態規劃 廣度優先搜尋)

2021-10-07 07:37:33 字數 973 閱讀 6657

1、題目描述

在乙個由 0 和 1 組成的二維矩陣內,找到只包含 1 的最大正方形,並返回其面積。

2、示例

輸入: 

1 0 1 0 0

1 0 1 1 1

1 1 1 1 1

1 0 0 1 0

輸出: 4

3、題解

解法一:

基本思想:動態規劃,dp[i][j]表示如果當前位置加入組成的正方形的邊長。掃瞄matrix矩陣每個元素,如果該位置的值是1,則dp(i,j) 的值由其上方、左方和左上方的三個相鄰位置的dp值決定。,當前位置的元素值等於三個相鄰位置的元素中的最小值加1,狀態轉移方程如下:dp[i][j] = min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1。

解法二:

#include#include#include#includeusing namespace std;

class solution );

while (!queue.empty())

);queue.push_front();

queue.push_front();

}else

break;

queuelen--;

}if (queuelen == 0)

else

break; }}

}} return res * res;

} bool check(vector>& matrix, int i, int j) };

class solution1

}} return res * res;

}};int main()

, ,

, ,

};cout << solute.maximalsquare(matrix) << endl;

return 0;

}

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

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,肯定不能構成正方形 ...