您好,登錄后才能下訂單哦!
題目描述
地上有一個m行和n列的方格。一個機器人從坐標0,0的格子開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行坐標和列坐標的數位之和大于k的格子。 例如,當k為18時,機器人能夠進入方格(35,37),因為3+5+3+7 = 18。但是,它不能進入方格(35,38),因為3+5+3+8 = 19。請問該機器人能夠達到多少個格子?
class Solution:
def movingCount(self, threshold, rows, cols):
# 判斷(row, col)是否可以進入:位置合法且未進入過
def isValid(row, col):
if row < 0 or row >= rows or col < 0 or col >= cols:
return False
num = 0
while row > 0:
num += row % 10
row //= 10
while col > 0:
num += col % 10
col //= 10
return num <= threshold
def helper(row, col):
cnt = 0 # 對于每個位置,在確認過可以訪問之前先初始化為0
if isValid(row, col) and not visited[row][col]:
# 如果(row, col)可以進入,那么將其設為已訪問,然后對四個鄰居進行訪問
visited[row][col] = True
cnt = (1 + helper(row + 1, col) + helper(row - 1, col)
+ helper(row, col + 1) + helper(row, col - 1))
return cnt
if threshold < 0:
return 0
visited = [[False] * cols for _ in range(rows)]
return helper(0, 0)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。