什么叫貌似正确
有一类算法特别危险,它【0】。
在前一百多个数上对拍
下面 fast_prime 只拿 2、3、5、7 去试除。把它和正确版在 2~120 上对拍一遍,数一数一致了几次: #include <algorithm> #include <iostream> #include
把第一个反例找出来
接着往上找:从 2 一直试到 1000,第一个让两个版本给出不同结论的数是几?补全 first_diff。 (本题用 g++ -std=c++17 -O0 编译。)
换个测试范围结论就翻了
同一个 fast_prime、同一种验收办法(对拍),只把范围从 2..120 换成 2..200,两次的结论分别是什么?输出格式如 一致/不一致。 (本题用 g++ -std=c++17 -O0 编译。)
循环不变式是什么
第 1 步:下面那格是 best 第 2 步:前 1 个里 best 最大 第 3 步:前 2 个里 best 最大 第 4 步:前 3 个里 best 最大 第 5 步:前 4 个里 best 最大 第 6 步:前 5 个里 best 最
用不变式证明要验哪三件事(C++)
拿不变式证明一个循环是对的,要验的三件事是【0】。
不变式和普通断言差在哪
在循环里随手加一句 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 编译。)