竞赛中如何对拍

简介

对拍,是算法竞赛中经常用到的一种方法,是将一份暴力代码与你新写出来的正解代码运行相同的程序并比较答案。这在无法提交的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文件,会无法运行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值