題目描述
小朋友 A 在和 ta 的小夥伴們玩傳信息遊戲,遊戲規則如下:
- 有 n 名玩家,所有玩家編號分別爲 0 ~ n-1,其中小朋友 A 的編號爲 0
- 每個玩家都有固定的若干個可傳信息的其他玩家(也可能沒有)。傳信息的關係是單向的(比如 A 可以向 B 傳信息,但 B 不能向 A 傳信息)。
- 每輪信息必須需要傳遞給另一個人,且信息可重複經過同一個人
給定總玩家數 n,以及按 [玩家編號,對應可傳遞玩家編號] 關係組成的二維數組 relation。返回信息從小 A (編號 0 ) 經過 k 輪傳遞到編號爲 n-1 的小夥伴處的方案數;若不能到達,返回 0。
限制:
2 <= n <= 10
1 <= k <= 5
1 <= relation.length <= 90, 且 relation[i].length == 2
0 <= relation[i][0],relation[i][1] < n 且 relation[i][0] != relation[i][1]
算法思路
單向圖,回溯。
class Solution:
def numWays(self, n: int, relation, k: int) -> int:
d={}
for i,j in relation:
if i not in d:
d[i]=[j]
else:
d[i].append(j)
self.res=0
def helper(v,k,n):
if k:
if v not in d:return
for i in d[v]:
helper(i,k-1,n)
else:
if v==n:
self.res+=1
helper(0,k,n-1)
return self.res
執行用時 :44 ms, 在所有 Python3 提交中擊敗了80.22%的用戶
內存消耗 :13.7 MB, 在所有 Python3 提交中擊敗了100.00%的用戶