打家劫舍

补全 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、打家劫舍空数组。 三个结果用 / 拼起来输出。

开始练习 →