ACM程序对拍
前言
很多时候我们写了一份代码,造了很多数据都没问题,但是提交的时候一直Wrong Answer,这时候我们就可以用对拍来快速查找错误的数据。
原理
造出大量的随机数据,用正确代码和你的代码跑这些数据,对比输出的不同。
实现
文件基础:
- rand.cpp:一份能造合法的随机数据的代码
- std.cpp:一份可以保证答案正确性的代码
- my.cpp:一份你的WA的代码
- rand.out:存放rand.cpp运行后生成的合法的随机数据
- std.out:使用std.cpp跑rand.out中的数据后生成的输出
- my.out:使用my.cpp跑rand.out中的数据后生成的输出
需掌握的知识:
1.输入输出重定向(相关链接),也就是文件读写:
1 | freopen("1.in", "r", stdin); |
2.生成区间随机数:a+rand()%(b-a+1)可以生成一个$[a,b]$的正整数。
1 | int get(int l, int r) //闭区间 |
3.Windows下cmd中使用FC命令详细对比两个文件相似之处(相关链接):打开cmd命令行,输入FC 第一个文件的绝对路径 第二个文件的绝对路径。
这样,我们只需先写一份rand.cpp,运行出多组合法数据,再用std.cpp和my.cpp分别跑这些数据,最后用windows cmd中的FC命令比对两个文件不一样的地方,rand.out中对应的数据就是Wrong Answer的数据啦