简介
对拍,是算法竞赛中经常用到的一种方法,是将一份暴力代码与你新写出来的正解代码运行相同的程序并比较答案。这在无法提交的OI赛制中是用来查错的好方法。
具体代码
对拍就没什么讲的了,直接背代码就行。我们想要测试两个程序,首先需要一组数据,这是我们就要使用随机数生成一组解,而为了保证随机,我们不用rand,而是使用mt19937,即梅森旋转。
#include<bits/stdc++.h>
using namespace std;
mt19937 rnd(time(0));//注意函数里面只能这么写,不能想rand一样写time(NULL)
int main(){
cout<<rnd()%1000<<" "<<rnd()%1000;
}
然后我们需要准备出一个执行对拍的程序。因为你总不能每次手动运行把,对于这个程序的写法,分为两种。一种是不开文件的写法,一种是开了文件的写法。
#include<bits/stdc++.h>
using namespace std;
int main(){
system("date.exe > in.txt");//这里的 > 的意思就是运行某个代码,将其的结果输入到哪
system("baoli.exe < in.txt > ans1.txt");//这里一定写的是.exe,不然是打开代码而不是运行
system("now.exe < in.txt > ans2.txt";)
if(system("fc ans1.txt ans2.txt"))cout<<"AC";
else cout<<"WA";
}
#include<bits/stdc++.h>
using namespace std;
int main(){
system("date.exe");/因为开了文件,代码会自己去找输入输出,所以只要运行就可以了
system("baoli.exe");
system("now.exe";)
if(system("fc ans1.txt ans2.txt"))cout<<"AC";
else cout<<"WA";
}
这里唯一需要注意的就是要将所有的程序放在同一个文件夹中,不要会找不到对应的程序,还有所有程序都要先运行一遍,不然没用.exe文件,会无法运行。