依然利用回溯法

class Solution:
    def movingCount(self, threshold, rows, cols):
        # write code here
        if threshold < 0 or rows <= 0 or cols <= 0:
            return 0
        visited = [0]*rows*cols
        count = self.movingCountCore(threshold,rows,cols,0,0,visited)
        return count
    def movingCountCore(self,threshold,rows,cols,row,col,visited):
        count = 0 
        if self.check(threshold,rows,cols,row,col,visited):
            visited[row*cols+col] = 1
            count = 1 + self.movingCountCore(threshold,rows,cols,row-1,col,visited)\
            + self.movingCountCore(threshold,rows,cols,row,col-1,visited)\
            + self.movingCountCore(threshold,rows,cols,row+1,col,visited)\
            + self.movingCountCore(threshold,rows,cols,row,col+1,visited)
        return count
    def check(self,threshold,rows,cols,row,col,visited):
        if 0 <= row < rows and 0 <= col < cols and self.getdigitSum(row)+self.getdigitSum(col) <= threshold\
        and not visited[row*cols+col] :
            return True
        return False
    def getdigitSum(self,nums):
        sum = 0
        while nums > 0:
            sum += nums % 10
            nums = nums // 10
        return sum