对拍程序的写法

对拍程序的写法

作为一名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存入的那个文件内
直接伴着数据差错即可。

原文地址:https://www.cnblogs.com/heanda/p/12391253.html