LCP 07. 傳遞資訊

Stig.Huang發表於2020-11-19

本題可以運用dfs加遞迴的方法解決:
首先定義一個函式,分別將列表、開始的點和走的 步數
先設定終止條件,則是當走的步數為k時,如果路徑最後輸出的是符合題目條件的n-1,則將本方法記錄在結果ans中
同時在最後返回0(停止本次搜尋)
之後將列表中的每一個0分別設定為start,重複遞迴
因為陣列中多個0都可以成為開始的起點
所以將多個0重複為最最開始的起點
最後返回記錄了每種方法的列表ans的長度
則是共有幾種傳遞方法

class Solution:
    def numWays(self, n: int, relation: List[List[int]], k: int) -> int:
        ans = []

        def dfs(relation, start, step):
 
            if step == k: 
                if start == n-1:  
                    ans.append(1)  
                return 0
            
            for i in range(len(relation)):
                if relation[i][0] == start:
                    dfs(relation, relation[i][1], step+1)
                    
        for i in range(len(relation)): 
            if relation[i][0] == 0:
                dfs(relation, relation[i][1], 1) 
        
        return len(ans)         

相關文章