对拍的作用
对拍,将两份代码的结果进行文件比较,从而找出一组hack数据,然后你就可以开开心心的对自己的错误代码进行debug了。而在CSP和NOIP考试中,用到的是Linux系统,所以两者的对拍程序稍微有一些区别。
对拍之前的准备
首先,你要有东西可以拿来作比较。所以,你要有一份你需要hack的代码 sol.cpp;
然后你自己写一个暴力程序,或者在平时的话可以借用他人的AC代码,得到 bf.cpp;
要让程序运行,肯定需要数据输入才可以,那么就再写一个random.cpp,进行数据生成;
值得注意的是,要留意你的暴力程序的时间复杂度,适当调整一下随机数据的范围。数据较小的情况下虽然出错的概率很低,但是在脚本批量生成的情况下,总可以找出问题所在。
那么,在Windows系统下,我们分别运行三个程序再加上freopen,就可以得到三个exe文件和三个txt文件(具体见代码)。这时候就差不多了,再运行对拍程序,就可以进行数据生成和比较文件了。
对拍Code(Windows系统)
以最简单的 A+B problem 为例子,我们就可以得到以下四个程序
// sol.cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("random.txt","r",stdin);
freopen("sol.txt","w",stdout);
in