做了一個比較完善的課程管理與推薦系統
阿新 • • 發佈:2020-08-01
地上有一個m行n列的方格,從座標 [0,0] 到座標 [m-1,n-1] 。一個機器人從座標 [0, 0] 的格子開始移動, 它每次可以向左、右、上、下移動一格(不能移動到方格外),也不能進入行座標和列座標的數位之和大於k的格子。 例如,當k為18時,機器人能夠進入方格 [35, 37] ,因為3+5+3+7=18。但它不能進入方格 [35, 38],因為3+5+3+8=19。 請問該機器人能夠到達多少個格子? 示例 1: 輸入:m = 2, n = 3, k = 1 輸出:3 示例 2: 輸入:m = 3, n = 1, k = 0 輸出:1 提示: 1 <= n,m <= 100 0 <= k <= 20 class Solution: def movingCount(self, m: int, n: int, k: int) -> int: def check(mark,i,j,m,n,k,ans): if i<0 or j<0 or i>=m or j>=n: return if mark[i][j] != 0: return flag = 0 for c in str(i)+str(j): flag += int(c) if flag > k: mark[i][j] = -1 return ###### 當前座標部滿足條件時,返回 else: mark[i][j] = 1 ans.add((i,j)) #print(i,j,flag,flag <=k) check(mark,i+1,j,m,n,k,ans) check(mark,i,j+1,m,n,k,ans) check(mark,i-1,j,m,n,k,ans) check(mark,i,j-1,m,n,k,ans) mark = [[0 for _ in range(n)] for __ in range(m)] ans = set() check(mark,0,0,m,n,k,ans) #print(mark) return len(ans)