对拍程序

在比赛中,可以写两个程序,一个是保证答案正确的暴力程序,另一个则是要提交的答案程序,
为了检验答案程序的正确性,可以生成随机数据,分别在两个程序上测试,检查输出答案是否一致
注:生成随机数据的程序要根据题目给出的数据格式,具体问题具体分析,这里只给出一个示例

#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<algorithm>
typedef long long ll;
int n = 1000, m = 1000,k = 1000;
int main()
{
	printf("%d %d %d", n, m,k);
	for(int i = 1; i <= k; ++i)
	{
		int cho = rand()%1;
		char ch = (cho == 0?'R':'S');
		int x = rand()%(std::min(n, m)-1)+1;
		ll k = rand();
		printf("%c %d %lld
", ch, x, k);
	}
	return 0;
}

接下来是对拍程序,用来比较两个程序的输出答案是否一致,其中data.cpp是随机数据生成器


#include<cstdio>
#include<cstdlib>
int main()
{
	system("g++ dp1.cpp -o a ");
	system("g++ dp2.cpp -o b ");
	system("g++ data.cpp -o data ");
	int cntcr = 0, cntwr = 0;
	while(1)
	{
		system("./data >data.in");
		system("./a <data.in >1.out");
		system("./b <data.in >2.out");

		if(system("diff 1.out 2.out > /dev/null"))
		{
			printf("%d Wrong Answer
",++cntwr);
		}else
		{
			printf("%d Accepted
", ++cntcr);
		}
	}
	return 0;


}

原文地址:https://www.cnblogs.com/cdsidi/p/13425533.html