关于对拍
OI比赛的时候经常会发生这么一种情况:
第X道题,写好了暴力并能够保证暴力的正确性,但突然想到了一个更为高效的算法,但无法确定程序是否正确,这个时候,就要使用对拍解决问题。
有些人是用c++程序进行对拍的,而我喜欢用bat文件(因为写起来短啊)。
我们假设这道题的题目名为problem,数据生成的可执行程序名为random.exe
两个程序的可执行程序名名称为problem1.exe和problem2.exe。
先发一波对拍效果图
最后一行是我打了Ctrl + C
终止程序因为这样才能截图
两个版本的bat对拍
cpp内重定向写法
首先是第一种版本,就是三个源程序中都写了freopen,且random.exe的输出文件为problem.in,而两个程序所对应的输出为problem1.out和problem2.out
接下来就是对应的bat
@echo off
:loop
random.exe
problem1.exe
problem2.exe
fc problem1.out problem2.out
if not errorlevel 1 goto loop
pause
goto loop
bat内重定向写法
其次是第二种版本,就是三个程序的freopen都不被执行,相比来讲也更加随性,毕竟名字可以乱取了
对应的bat,效果和第一种是一样的。
@echo off
:loop
random.exe > problem.in
problem1.exe < problem.in > problem1.out
problem2.exe < problem.in > problem2.out
fc problem1.out problem2.out
if not errorlevel 1 goto loop
pause
goto loop
两种代码可以自己参考使用,各有优劣。
对于ba