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

方法二:动态规划

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

复杂度分析

相关推荐
上不如老下不如小36 分钟前
2025年第七届全国高校计算机能力挑战赛初赛 Python组 编程题汇总
开发语言·python·算法
小年糕是糕手1 小时前
【C++】类和对象(二) -- 构造函数、析构函数
java·c语言·开发语言·数据结构·c++·算法·leetcode
kupeThinkPoem1 小时前
跳表有哪些算法?
数据结构·算法
前端小L2 小时前
图论专题(二十一):并查集的“工程应用”——拔线重连,修复「连通网络」
数据结构·算法·深度优先·图论·宽度优先
88号技师2 小时前
2025年9月一区SCI-孤行尺蠖觅食优化算法Solitary Inchworm Foraging-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
前端小L2 小时前
图论专题(二十五):最小生成树(MST)——用最少的钱,连通整个世界「连接所有点的最小费用」
算法·矩阵·深度优先·图论·宽度优先
前端小L2 小时前
图论专题(二十三):并查集的“数据清洗”——解决复杂的「账户合并」
数据结构·算法·安全·深度优先·图论
CoovallyAIHub2 小时前
破局红外小目标检测:异常感知Anomaly-Aware YOLO以“俭”驭“繁”
深度学习·算法·计算机视觉
点云SLAM3 小时前
图论中邻接矩阵和邻接表详解
算法·图论·slam·邻接表·邻接矩阵·最大团·稠密图