思路:
自己寫的一直出不了結果不知道為啥,參考了大佬的**。
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...