题目
解法:动态规划
其实这道题目跟221 maximum square. 那道题里面dp数组每个位置代表以这个位置作为右下角点的最大square的边长多大。而这边只需要把那个dp数组全部加起来就是答案了。因为dp每个位置的值代表以这个位置作为右下角的点的square有多少个
python版本
class Solution:
def countSquares(self, matrix: List[List[int]]) -> int:
m = len(matrix)
n = len(matrix[0])
dp = [[0]*n for _ in range(m)]
for i in range(m):
if matrix[i][0] == 1:
dp[i][0] = 1
for i in range(n):
if matrix[0