打家劫舍
补全 rob 并输出最多能拿多少。
开始练习 →
最大子段和
补全 max_sub 并输出最大的连续和。 (best 和 cur 都从第一个元素起——上一节刚讲过为什么。)
开始练习 →
⚠️ 三个经典题一起交
把三个都写出来(爬楼梯用滚动变量版),三个答案用 / 拼起来输出:爬 10 级 / 打家劫舍 / 最大子段和。
开始练习 →
拿到一个新问题,先定什么
要用 DP 解一个新问题,第一件事是定下【0】。
开始练习 →
交付一个 DP 要验什么
把一个 DP 解交出去,必须验的是【0】。
开始练习 →
四项一起对得上吗
运行下面这段程序: def fib_tab(n): if n < 2: return n dp = [0] * (n + 1) dp[1] = 1 for i in range(2, n
开始练习 →
第一步:数出重复,再消掉它
最终作品第一步:写出朴素 fib 和记忆化 fib(都带计数),算 fib(12)。 输出朴素次数 / 记忆化次数 / 结果是否一致。
开始练习 →
第二步:改成自底向上填表
写出填表版 fib 和填表版爬楼梯,把 fib(12) 和爬 10 级的走法数拼起来输出。
开始练习 →
第三步:自己设计两个状态
写出打家劫舍和最大子段和,两个答案拼起来输出。
开始练习 →
第四步:把边界单独验一遍
验三种边界:最大子段和遇上全负数[-3,-1,-4]、爬楼梯 n=0、打家劫舍空数组。 三个结果用 / 拼起来输出。
开始练习 →