leetcode-221. 最大正方形
class Solution { public: int maximalSquare(vector<vector<char>>& matrix) { int m = matrix.size(); int n = matrix[0].size(); if(m==0) return 0; vector<vector<int>> dp(m, vector<int>(n,0)); //dp[i][j],以matrix[i][j]为右下角且包含i,j在内的只包含1的正方形的边长最大值。 int edge = 0; for(int i = 0; i < m; i++) for(int j = 0; j < n; j++){ if(matrix[i][j] == '1'){ if(i==0||j==0) dp[i][j] = 1; else dp[i][j] = min(min(dp[i][j-1],dp[i-1][j-1]),dp[i-1][j])+1; } edge = max(dp[i][j],edge); } return edge*edge; } };