思路:
1.从(0,0)开始走,每成功走一步标记当前位置为true,然后从当前位置往四个方向探索,
返回1 + 4 个方向的探索值之和。
2.探索时,判断当前节点是否可达的标准为:
1)当前节点满足limit限制。
2)当前节点在矩阵内;
3)当前节点未被访问过;
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.vis = {}
def movingCount(self, threshold, rows, cols):
# write code here
return self.moving(threshold, rows, cols, 0, 0)
def moving(self, threshold, rows, cols, row, col):
if row/10 + row%10 + col/10 + col%10 > threshold:
return 0
if row >= rows or col >= cols or row < 0 or col < 0:
return 0
if (row, col) in self.vis:
return 0
self.vis[(row, col)] = 1
return 1 + self.moving(threshold, rows, cols, row-1, col) + self.moving(threshold, rows, cols, row+1, col) + self.moving(threshold, rows, cols, row, col-1) + self.moving(threshold, rows, cols, row, col+1)