← 返回课程路线 第五阶段 · S5-02 · 60 分钟

按证据修错,不靠乱改

这一课只练一件事:用按证据修错,而不是靠猜测乱改。顺序是先做,再用或检验假设,最后记下修复原因并重新测试。必会:能把错误缩小到小数据;能写出验证假设的输出;不靠乱改碰运气。最小示例:求前缀和的程序对 n=5 错了,先缩成 n=2 仍错。样例追踪:n=5 输出 9,手算应是 10;缩到 a=[1,2] 仍少 1;分段输出发现 prefix 从 a[1] 开始加。边界是不要在大数据上猜改,也不要改完不回归。建议掌握:写下修复原因。拓展:用暴力程序做只是拓展习惯,现在不当硬门槛。这里不会在浏览器里运行 C++。

必会:缩小到小数据;写出验证假设的输出;不靠乱改 建议掌握:记下修复原因并回归测试 拓展:差分检查,不当硬门槛

任务 1:先选出该怎么修

先确定答案错误时该按什么开始,再确定有了反例后该不该用。点不认识的词可看基础解释。

必会:能说出为什么要先做;能说出为什么不能靠乱改碰运气。这里不会在浏览器里运行 C++,只练习选择和走过程。

程序在 n=100000 上错了,样例却是对的。第一步该做什么?最小复现 · 必会

已经有一组 n=2 的反例,接下来该怎么验证“是下标写错了”?分段输出 · 必会