'''
解题思路:
将行坐标和列坐标的数位之和大于k的格子设为不可访问,即visited[i][j]=1,然后用BFS搜索
'''
class Solution:
def movingCount(self, m: int, n: int, k: int) -> int:
Dic = {}
for i in range(max(m,n)+1):
t = sum(map(int,list(str(i))))
Dic[i] = t
#print(Dic)
visited = [[0]*n for _ in range(m)]
for i in range(m):
for j in range(n):
if Dic[i]+Dic[j]>k:
visited[i][j] = 1
#print(visited)
stack = [[0,0]]
visited[0][0] = 1
MV = [[0,1],[0,-1],[1,0],[-1,0]]
res = 0
while stack:
xy = stack.pop()
res += 1
i = xy[0]
j = xy[1]
for mv in MV:
ii = i+mv[0]
jj = j+mv[1]
if 0<=ii<=m-1 and 0<=jj<=n-1 and visited[ii][jj]==0:
visited[ii][jj] = 1
stack.insert(0,[ii,jj])
#print(res)
return res