原题链接:Leetcode 1277. 统计全为 1 的正方形子矩阵
cpp
class Solution {
public:
int countSquares(vector<vector<int>>& matrix) {
int m = matrix.size();
int n = matrix[0].size();
vector<vector<int>> dp(m, vector<int>(n, 0));
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][j - 1], dp[i - 1][j]),
dp[i - 1][j - 1]) +
1;
}
}
res += dp[i][j];
}
}
return res;
}
};