题目描述
解法:DP(C++)
详细参考 官方题解 中关于 dp 的描述
class Solution {
public:
int countSquares(vector<vector<int>>& matrix) {
if(matrix.size()==0 || matrix[0].size()==0) return 0;
int n = matrix.size(), m = matrix[0].size(), ans = 0;
vector<vector<int>> dp(n, vector<int>(m, 0));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(matrix[i][j])
{
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;
ans += dp[i][j];
}
}
}
return ans;
}
};