'''
解题思路:
将行坐标和列坐标的数位之和大于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