三个经典题一起交

把三个都补全(爬楼梯用滚动变量版),三个答案用 / 拼起来输出:爬 10 级 / 打家劫舍 / 最大子段和。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

拿到新问题先定什么

第 1 步:先填好最小的两格 第 2 步:第 2 格 = 前两格相加 第 3 步:第 3 格 = 前两格相加 第 4 步:第 4 格 = 前两格相加 第 5 步:第 5 格 = 前两格相加 第 6 步:第 6 格 = 前两格相加 第 7 步

开始练习 →

交付一个 DP 要验什么(C++)

把一个 DP 解交出去,必须验的是【0】。

开始练习 →

四项一起对得上吗

运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #include <vector> using nam

开始练习 →

第一步数出重复再消掉

最终作品第一步:朴素 fib 和记忆化 fib(都带计数)各算 fib(12)。输出 朴素次数 / 记忆化次数 / 结果是否一致。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

第二步改成自底向上

补全填表版 fib 和填表版爬楼梯,把 fib(12) 和爬 10 级的走法数拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

第三步自己设计两个状态

补全打家劫舍和最大子段和,两个答案拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

第四步把边界单独验

验三种边界:最大子段和遇上全负数 [-3, -1, -4]、爬楼梯 n = 0、打家劫舍空数组。三个结果用 / 拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

交付状态转移加记忆化

这是这条路线的最终作品。六个函数都在,补全其中的记忆化 fib、填表 fib、打家劫舍、最大子段和,main 一次验完五条:朴素 fib(12) 调用 465 次、记忆化只要 23 次且结果相同;填表 fib(12) 也是 144;爬 10

开始练习 →

对拍要拿谁当标准

写完一个 DP,想用随机数据检查它,最好拿【0】当标准答案。

开始练习 →