前言
很多时候我们写了一份代码,造了很多数据都没问题,但是提交的时候一直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.输入输出重定向(相关链接),也就是文件读写:
freopen("1.in", "r", stdin);
freopen("1.out", "w", stdout);
2.生成区间随机数:a+rand()%(b-a+1)可以生成一个 [ a , b ] [a,b] [a,b]的正整数。
int get(int l, int r) //闭区间
{
return l + rand() % (r - l + 1);
}
int main()
{
srand(time(NULL));
for (int i = 1; i <= 100; i++)
cout << get(1, 100) << endl;
return 0;
}
3.Windows下cmd中使用FC命令详细对比两个文件相似之处(相关链接):打开cmd命令行,输入FC 第一个文件的绝对路径 第二个文件的绝对路径。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN2XjlGcjAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL90zZixGaykVe5IzYshmMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0YTN5MDM0ITM2ITMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
这样,我们只需先写一份rand.cpp,运行出多组合法数据,再用std.cpp和my.cpp分别跑这些数据,最后用windows cmd中的FC命令比对两个文件不一样的地方,rand.out中对应的数据就是Wrong Answer的数据啦