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