「最优子结构」是什么意思

同一个小问题,又算了一遍 重算 记住 说一个问题有「最优子结构」,是指【0】。

开始练习 →

用 DP 要同时满足哪两条

同一个小问题,又算了一遍 重算 记住 一个问题能用动态规划,要同时具备【0】。

开始练习 →

「自顶向下」和「自底向上」差在哪

同一个小问题,又算了一遍 重算 记住 DP 的两种写法,区别是【0】。

开始练习 →

用 DP 要付什么代价

同一个小问题,又算了一遍 重算 记住 动态规划省下了重复计算,代价是【0】。

开始练习 →

爬十级楼梯有几种走法

同一个小问题,又算了一遍 重算 记住 每次能上 1 级或 2 级,爬到第 10 级一共有几种走法?运行下面这段程序: def climb(n): dp = [0] * (n + 1) dp[0] = 1 for i

开始练习 →

朴素递归的 fib 慢在哪

直接照定义写的递归 fib 很慢,因为【0】。

开始练习 →

递归树上的"重复"是怎么来的

递归树上出现重复的子问题,是因为【0】。

开始练习 →

朴素 fib 的调用次数怎么长

n 每加一,朴素 fib 的调用次数大致【0】。

开始练习 →

怎么确认一个递归有重叠子问题

要确认某个递归确实在重复计算,办法是【0】。

开始练习 →

⚠️ fib(3) 被算了多少遍

用朴素递归算 fib(12),数一数其中 fib(3) 这一个子问题被算了几遍。运行下面这段程序: def fib_hit(n, k, st): if n == k: st["h"] += 1

开始练习 →