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

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

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

阅读更多 →
第四步:复杂度依据(数操作次数,不掐表)

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

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

阅读更多 →
第三步:三步论证(覆盖全部输入那一关)

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

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

阅读更多 →
第二步:对拍(快速证伪那一关)

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

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

阅读更多 →
第一步:先把不变式验起来

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

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

阅读更多 →
这条路线上的四个数

这条路线上的四个数

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

阅读更多 →
⚠️ 收官:对拍在这套办法里排第几

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

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

阅读更多 →
一份「设计 + 证明」该包含什么

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

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

阅读更多 →
🔴 一个解法,三个问题

🔴 一个解法,三个问题

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

阅读更多 →
交付:归约做成了没有,看三件事

交付:归约做成了没有,看三件事

一次归约算不算做成,验三件事:答案对、没写新算法、两者同时成立。

阅读更多 →