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