【力扣】LCP 07:傳遞消息 | 單向圖

題目描述

小朋友 A 在和 ta 的小夥伴們玩傳信息遊戲,遊戲規則如下:

  1. 有 n 名玩家,所有玩家編號分別爲 0 ~ n-1,其中小朋友 A 的編號爲 0
  2. 每個玩家都有固定的若干個可傳信息的其他玩家(也可能沒有)。傳信息的關係是單向的(比如 A 可以向 B 傳信息,但 B 不能向 A 傳信息)。
  3. 每輪信息必須需要傳遞給另一個人,且信息可重複經過同一個人

給定總玩家數 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]

來源:力扣(LeetCode)

算法思路

單向圖,回溯。

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%的用戶

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章