经典算法题剖析之传递信息(三)

方法二:动态规划

我们用 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]

复杂度分析

相关推荐
老鼠只爱大米几秒前
LeetCode经典算法面试题 #215:数组中的第K个最大元素(快速选择、堆排序、计数排序等多种实现方案详解)
算法·leetcode·堆排序·快速选择·topk·数组中的第k个最大元素
2301_816651228 分钟前
C++中的享元模式变体
开发语言·c++·算法
逆境不可逃10 分钟前
LeetCode 热题 100 之 35. 搜索插入位置 74. 搜索二维矩阵 34. 在排序数组中查找元素的第一个和最后一个位置
数据结构·算法·leetcode
m0_5832031311 分钟前
C++中的访问者模式变体
开发语言·c++·算法
浅念-17 分钟前
C ++ 智能指针
c语言·开发语言·数据结构·c++·经验分享·笔记·算法
不染尘.19 分钟前
最小生成树算法
开发语言·数据结构·c++·算法·图论
Klong.k32 分钟前
判断是不是素数题目
数据结构·算法
QQsuccess33 分钟前
AI全体系保姆级详讲——第一部分:了解AI基本定义
人工智能·算法
_日拱一卒36 分钟前
LeetCode:移动零
算法·leetcode·职场和发展
A923A1 小时前
【洛谷刷题 | 第四天】
算法·前缀和·贪心·洛谷·差分