题目描述
给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。
思路
- 动态规划:定义dp[i][j]表示以第i+1行第j+1字符结尾的只包含1的最大长度。若matrix[i][j]是0,则对应的dp为0,否则dp[i][j] = dp[i][j-1]+1。至此则再向上回溯,找到以第i+1行第j+1字符结尾的只包含1的最大矩形面积
代码
方法一:
class Solution {
public:
int maximalRectangle(vector<vector<char>>& matrix) {
if(matrix.size()==0)
return 0;
int line = matrix.size();
int col = matrix[0].size();
int max = 0;
vector<vector <int>> dp(line,vector<int>(col));
for(int i = 0;i<line;i++)
{
for(int j = 0;j<col;j++)
{
if(matrix[i][j] == '0')
dp[i][j] = 0;
else
{
if