不变式和普通断言差在哪

在循环里随手加一句 assert,和写一个不变式的区别是【0】。

开始练习 →

每一轮的 best 是什么

数组 {17, 24, 15, 13, 23},把每一轮结束时的 best 都打出来: #include <algorithm> #include <iostream> #include <string>

开始练习 →

全负数组上它给出什么

一个常见的写法是 best = 0。拿全是负数的数组跑一遍: #include <algorithm> #include <iostream> #include <string> #include <

开始练习 →

把不变式写成一句 assert

在循环体末尾加一句 assert,把「best 是前 i+1 个里最大的」真正验起来,并数一数一共验过几轮。输出「最大值/验过几轮」。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

一组一直成立另一组就破

还是 best = 0 那一版。看看不变式在两个数组上分别第几轮开始不成立(一直成立就给 0),输出如 0/1。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

交付初始化保持终止

把不变式证明的三步各写成一次检查,三个结论一起输出,如 过/过/过。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

数学归纳法的两步是什么

第 1 步:左右两半都已排好 第 2 步:取较小的 13 放下去 第 3 步:取较小的 15 放下去 第 4 步:取较小的 17 放下去 第 5 步:取较小的 23 放下去 第 6 步:右边空了,左边还剩一个 第 7 步:剩下的也要接上,一

开始练习 →

递归的基线对应哪一步

一个递归函数里的基线条件,对应归纳法的【0】。

开始练习 →

归纳假设可以假设什么

证归纳步的时候,你可以放心假设【0】。

开始练习 →

错的那版在有序输入上

下面 msort_bad 漏了合并的最后一句。先拿最顺手的测试用例——已经排好序的数组——试试: #include <algorithm> #include <iostream> #include <strin

开始练习 →