python3代码
class Solution:
def movingCount(self, threshold, rows, cols):
# write code here
if not threshold or not rows or not cols:
return 0
# 定义每格标志位: 0代表没走过; 1代表走过
visited = [0]*(rows * cols)
for row in range(rows):
for col in range(cols):
return self.movingCountCore(threshold, rows, cols, row, col, visited)
# 数字数位求和函数
def digitSum(self, dig):
re = 0
while dig:
re = re + dig % 10
dig = dig // 10
return re
# 递归回溯判断每步是否可行,并返回计数和累加
def movingCountCore(self, threshold, rows, cols, row, col, visited):
count = 0
if 0 <= row < rows and 0 <= col < cols \
and self.digitSum(row) + self.digitSum(col) <= threshold \
and visited[row * cols + col] == 0:
visited[row * cols + col] = 1
count = 1 + self.movingCountCore(threshold, rows, cols, row - 1, col, visited) \
+ self.movingCountCore(threshold, rows, cols, row + 1, col, visited) \
+ self.movingCountCore(threshold, rows, cols, row, col - 1, visited) \
+ self.movingCountCore(threshold, rows, cols, row, col + 1, visited)
return count

京公网安备 11010502036488号