为什么要主动测边界
样例通常是题目附带的输入输出示例,用来展示格式和典型情况,不是保证覆盖所有合法输入。以一道自拟的“数组最小值”任务为例:输入一个整数数组,输出最小值。若样例是 [3,1,2] 输出 1,代码可能只符合这条路径。主动构造边界输入,可以在提交前发现隐藏错误。
建议先检查四类输入
- 单元素数组:例如 [7],预期输出 7。若把最小值初始化为0,再只在遇到更小值时更新,输入[7]便会错误保留0。初始化为首个合法元素,或使用覆盖题目范围的上界,才能与比较逻辑配合。
- 重复值:例如 [5,5,5],预期输出 5。相等比较不会改变结果,但可以借此检查比较条件写成 < 与 <= 是否有区别。
- 负数:例如 [-3,-1,-2],预期输出 -3。若每次遇到更小值就更新,从0开始在本例仍会得到-3;这个负数测试不能代替前面的正数测试。
- 最大规模:如果题目限制数组长度不超过 10^5,应尝试构造 10^5 个元素的输入,确认时间和空间仍可接受。
空输入是否合法要看题目
若题目明确说数组长度至少为 1,就不用处理空数组;若题目允许长度为零,应按其约定输出;未说明而影响解题时,应查澄清信息,不自行编输出。是否处理空输入不是通用规则,必须逐字读题。
手算预期值并定位错误
测试时先手算每个用例的预期输出,再与程序结果对照。若不一致,可以按顺序排查:先打印读取后的数组,确认输入没有被截断或错位;再检查比较逻辑;最后检查输出格式。也可以在比较过程中打印当前最小值,快速判断是哪一步改变出了问题。
适用范围
以上是通用的编程练习与调试方法,不构成任何具体比赛(如 USACO)的官方规则或题目。每道题应以它自己的输入输出约定为准。可以尝试在日常练习中固定检查单元素、重复值、负数、最大规模四类输入,这有助于减少边界错误。



