原题目:https://leetcode-cn.com/problems/count-square-submatrices-with-all-ones/
思路:
如果边长是n,那么他可以构成n个正方形。见下图
代码:
class Solution {
public:
int countSquares(vector<vector<int>>& matrix) {
if(matrix.size() == 0 || matrix[0].size()==0) return 0;
int row=matrix.size(),col = matrix[0].size();
int sum = 0;
vector<vector<int>>dp(row,vector<int>(col));
for(int i=0;i<row;i++)
for(int j = 0;j<col;j++)
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-1][j-1]),dp[i][j-1]) + 1;
sum += dp[i][j];
}
return sum;
}
};