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

方法二:动态规划

我们用 dp[i][j] 表示数组的第 i 轮传递给编号 j 的人的方案数。

​若能传递给编号 y 玩家的所有玩家编号 x1,x2,x3... , 则第 i+1 轮传递信息给编号 y 玩家的递推方程为dpi+1y = sum(dpix1,dpix2,dpix3...),其递推形式即 dpi+1y += dpix

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]

复杂度分析

相关推荐
alphaTao4 小时前
LeetCode 每日一题 2026/10/12-2026/10/18
算法·leetcode
青岚_Nox4 小时前
# C语言实战:函数完全指南——从基础概念到static/extern深度解析
算法
CCCCCCCCharlie5 小时前
深入解析I/O底层:文件描述符与缓冲区真相
linux·开发语言·c++·算法
Cccp.1235 小时前
【leetcode】(十三)大数据处理
数据结构·算法·leetcode
学逆向的5 小时前
C 选择结构的执行效率分析
c语言·开发语言·算法·网络安全
wzdark5 小时前
动态规划算法的状态转移矩阵可视化分析5
算法·矩阵·动态规划
Pniubi5 小时前
力扣70爬楼梯
数据结构·算法·leetcode
人工智能培训5 小时前
具身智能环境交互与学习范式原理
大数据·linux·人工智能·学习·算法·机器学习
纪念 2296 小时前
C++算法(三)
开发语言·c++·算法
学不会pwn不改名6 小时前
时间复杂度与空间复杂度详解
算法