🔴 一个解法,三个问题

数组 [10, 20, 15, 5](总和 50)。三个看起来不一样的问题:能不能平分、能不能分成相差 10 的两堆、有没有子集和正好是 7。三个都归约到同一个 subset_sum,一行新算法都不许写。

开始练习 →

一份「设计 + 证明」该包含什么

交付一个自己设计的算法,除了代码本身,最该附上的是【0】。

开始练习 →

⚠️ 收官:对拍在这套办法里排第几

学完这条路线,再看"和另一条算法对拍"这件事,它的位置是【0】。

开始练习 →

这条路线上的四个数

把前面几节算出来的四个关键数字汇总输出:判素数的第一个反例、归并漏一句时放过它的输入数、比较排序的下界、十六次 append 的总搬移。 # 这条路线上算过的几个数,汇总一次 first_bad = 121 # 判素数:第

开始练习 →

第一步:先把不变式验起来

交付流程第一步:给自己的算法写一个循环不变式,在正数和全负数两组数据上各验一遍,输出各自成立的轮数。

开始练习 →

第二步:对拍(快速证伪那一关)

第二步:拿一个笨办法对拍。把 [17, 24, 15, 13, 23] 的全部 120 种排列都跑一遍。

开始练习 →

第三步:三步论证(覆盖全部输入那一关)

第三步:把不变式证明的三步各验一次。这一步和第二步的区别是——它不依赖你挑了哪些输入。

开始练习 →

第四步:复杂度依据(数操作次数,不掐表)

第四步:给出复杂度依据。在 5 / 10 / 20 个元素上各数一次比较次数。

开始练习 →

交付:五条验收条款一起过

最后一步:把一份完整的"设计 + 证明 + 复杂度"收成五条验收条款。每一条都要能下次改了代码再跑一遍。

开始练习 →

保存一组数据用什么

6 个成绩,两种放法: s1 s2 s3 s4 s5 s6 6 个名字,各管一个 80 90 70 60 85 75 scores 一个名字管一排 要保存一个班的多个成绩,最合适的是【0】。

开始练习 →