对拍程序的写法
对拍程序的写法
作为一名oier,考试不对拍,这跟直接见祖宗有什么区别
这里记录一下对拍程序的写法。
首先我们需要一个data.cpp程序,也就是数据生成器
int main()
{
srand(time(NULL));
for(R int i = 1; i <= 10; ++i)
{
ll x = (rand()<<15|rand()), y = (rand()<<15|rand());
cout<<x<<" "<<y<<endl;
}
return 0;
}
然后我们需要一个暴力程序,这里叫它baoli.cpp,因为这里举的例子不够明显,故用文字说明
int main()//暴力
{
for(R int i = 1; i <= 10; ++i)
{
ll x, y;
cin >> x >> y;
cout<<x + y<<endl;
}
return 0;
}
然后需要一个高分但是不保证正确率的程序,这里叫它a.cpp
int main()//正解
{
for(R int i = 1; i <= 10; ++i)
{
int x, y;
cin >> x >> y;
cout<<x+y<<endl;
}
return 0;
}
将三个程序运行得到的三个.exe文件,就是我们需要操作的。
接下来写一个对拍程序
:again
data > 1.in
baoli < 1.in > 1.out
a < 1.in > 2.out
fc 1.out 2.out
if not errorlevel 1 goto again
pause
这里面\(>\)就是把结果传到另一个文件内,\(<\)就是把另一个文件的东西传过来
还是很容易理解的,\(fc\)则是对比两个文件有没有差异
如果没有差异则继续,有则停下,有不同的数据会保留在data存入的那个文件内
直接伴着数据差错即可。