機械人的運動範圍

2021-09-24 04:08:10 字數 1068 閱讀 5193

思路:

自己寫的一直出不了結果不知道為啥,參考了大佬的**。

def movingcount(self, threshold, rows, cols):

# write code here

if rows < 1 or cols < 1 or threshold < 0:

return 0

visited = [false] * (rows * cols)

return self.moving(threshold, rows, cols, 0, 0, visited)

def moving(self, threshold, rows, cols, curx, cury, visited):

cnt = 0

if 0 <= curx < cols and 0 <= cury < rows and not visited[cury * cols + curx]:

if self.calbitsum(curx) + self.calbitsum(cury) <= threshold:

visited[cury * cols + curx] = true

# 能到達格仔數為當前位置+四個方向能走到的格仔數總和

cnt = 1 + self.moving(threshold, rows, cols, curx - 1, cury, visited) \

+ self.moving(threshold, rows, cols, curx, cury - 1, visited) \

+ self.moving(threshold, rows, cols, curx + 1, cury, visited) \

+ self.moving(threshold, rows, cols, curx, cury + 1, visited)

return cnt

def calbitsum(self, x):

ressum = 0

while x != 0:

ressum += x % 10

x /= 10

return ressum

機械人運動範圍

題目 地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 8 1...

機械人運動範圍

地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 8 19。請...

機械人的運動範圍

題目 地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 8 1...