方法二:动态规划
我们用 dp[i][j] 表示数组的第 i 轮传递给编号 j 的人的方案数。
若能传递给编号 y 玩家的所有玩家编号 x1,x2,x3... , 则第 i+1 轮传递信息给编号 y 玩家的递推方程为dp[i+1][y] = sum(dp[i][x1],dp[i][x2],dp[i][x3]...),其递推形式即 dp[i+1][y] += dp[i][x]

Python3 实现
class Solution:
def numWays(self, n: int, relation: List[int], k: int) -> int:
dp = [[0]*(n+1) for t in range(0,k+1)]
dp[0][0] = 1
for t in range(0,k):
for x,y in relation:
dp[t+1][y] += dp[t][x]
return dp[k][n-1]
复杂度分析
