221 Maximal Square

来源:互联网 发布:cad导入excel表格数据 编辑:程序博客网 时间:2024/05/18 03:36

题意:给出一个只包含0或1的二维矩阵,求矩阵中出现全为1的正方形的面积。
分析:动态规划。设dp[i][j]表示以matrix[i][j]为右下角的正方形的最大边长,转移方程为
这里写图片描述
代码:

class Solution {public:    int maximalSquare(vector<vector<char>>& matrix) {        int row=matrix.size();        if(row==0)  return 0;        int col=matrix[0].size();        vector<int> c(col,0);        vector<vector<int>> dp(row,c);        for(int i=0;i<row;++i)  dp[i][0]=matrix[i][0]-'0';        for(int i=0;i<col;++i)  dp[0][i]=matrix[0][i]-'0';        for(int i=1;i<row;++i)  for(int j=1;j<col;++j)  if(matrix[i][j]=='1')  dp[i][j]=min(min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1])+1;        int ans=0;        for(int i=0;i<row;++i)  for(int j=0;j<col;++j)  if(ans<dp[i][j])  ans=dp[i][j];        return ans*ans;    }};
0 0