1. 程式人生 > >【技巧】算法競賽中對拍程序的寫法

【技巧】算法競賽中對拍程序的寫法

定向 軟件 err 出錯 OS 進行 小數據 goto 隨機數

在競賽過程中一個對拍程序可以幫你排除許多錯誤,

如果擔心自己寫的正解被一些小數據卡掉,

我們通常會寫個對拍程序來檢查正解的正確性,

通過大量數據觀察正解與暴力的輸出是否相同。

我們首先拿出我們寫的可能會超時但是可以保證絕對正確的暴力程序,稱作bf.exe

然後拿出我們寫的待檢測的正解,稱作std.exe

接著我們寫一個隨機數據生成程序,用來一次生成一組自制隨機數據用來檢測輸出,稱作gen.exe

然後我們來寫一個利用windows批處理的對拍程序。

在你的程序的根目錄下新建一個稱作check.bat的文檔,

用編輯軟件打開這個批處理文件,添加如下代碼:

@echo off
:loop
gen.exe 
> data.in std.exe < data.in > std.out bf.exe < data.in > bf.out fc std.out bf.out if not errorlevel 1 goto loop pause goto loop

第一行echo off作用是關閉多余顯示,這樣可以只讓對拍程序顯示對拍信息。

第二行loop作用是循環,一直進行下面的操作。

大於號代表輸出重定向,可讓運行的程序的輸出結果輸出在特定的文件中。

小於號代表輸入重定向,可讓運行的程序從特定的文件讀取輸入信息。

第六行fc操作代表對比兩個文件,結果會顯示在控制臺中。

第七行代表如果沒有拍出錯誤就再返回第二行loop進行下一次對拍。

第八行pause就是c語言中sysem("pause")的操作。

第九行可以在pause之後進行第二輪對拍。

寫完了這個批處理程序就可以保存退出運行對拍了。

祝大家在競賽中拿到好成績!

【技巧】算法競賽中對拍程序的寫法