眾所周知,在\(oi\)學習以及考試中,對拍是一件非常重要的事。
有了對拍後,我們可以利用它發現**上的一些非常難看出來的錯誤。
編寫對拍程式一般有兩個辦法。
編寫乙個對拍的\(cpp\),並且利用檔案操作和\(fc\),進行輸出答案的判斷。\(fc\)是系統的函式,可以判斷兩個檔案是否一致。
注意:一定要將所有的\(cpp\)和\(exe\)放置到乙個資料夾。
對拍**如下:
#includeusing namespace std;
int case=0;
int main()
}
資料生成器如下:
#includeusing namespace std;
int random(int n)
int main()
wa**:
#include#include#include#includeusing namespace std;
#define reg register
#define rep(a,b,c) for(reg int a=(b),a##_end_=(c); a<=a##_end_; ++a)
#define ret(a,b,c) for(reg int a=(b),a##_end_=(c); a=a##_end_; --a)
#define debug(x) cerr<<#x<<" = "<57)if(c=='-')f=0;
do res=(res<<3)+(res<<1)+(c^48);
while(c=getchar(),c>=48&&c<=57);
return f?res:-res;
}templateinline bool min(t &a,t const&b)
templateinline bool max(t &a,t const&b)
不過,這個方法最為麻煩的事情就是檔案操作極其煩人。
每次不能直接複製貼上,還要編譯執行。
那麼,另一種方法就出現了。。
利用windows環境下的批處理進行對拍。
怎麼利用批處理檔案對拍呢?
首先,我們要先新建乙個字尾為\(.bat\)的檔案。
然後將下列**複製進去就行了,不用檔案操作直接雙擊即可。
**如下:
@echo off
:loop
make_data.exe>data.in //隨機樣本
ac.exeac.out //正確**
wa.exewa.out //測試**
fc ac.out wa.out
if not errorlevel 1 goto loop
pause
goto loop
\(update.in——2019.11.13\)
這裡再附上乙個同樣原理的\(c++\)編寫的對拍程式,利用我們熟知的\(c++\)**,可以使我們的對拍更加的多樣和細緻。
**如下:
#includeusing namespace std;
int main()
} return 0;
}
關於資料對拍
資料對拍是一種通過找到錯誤輸出資料尋找bug的方法 首先,我們可以跟據題意通過bfs,暴力等方法寫出乙份正確的 然後寫個隨機生成資料和驗證輸入輸出的 我們可以拿一道題來熟悉這個流程 路徑規劃 route 題意很好理解,就是給出起點,和終點,求出起點到終點的所需的步數,其中上下左右,斜著走八個方向都算...
對拍程式c
對拍就是你給兩個程式和乙個隨機資料生成器,然後系統用隨機資料生成器的輸出資料作為你這兩個程式的輸入,比較這兩個程式的輸出,找到這兩個程式輸出不一樣的一組資料。data.exe是資料生成程式 test.exe是你需要檢查的程式 ac.exe是正確的程式 這三個程式需要放在同一目錄下,執行以下對拍程式即...
關於 對拍 的一些認識
對拍是怎麼回事呢?對拍相信大家都很熟悉,但是對拍是怎麼回事呢,下面就讓小編帶大家一起了解吧。對拍是用來檢驗自己寫的正解的正確性 效率的東西。操作說明 1.準備好自己寫的暴力 b.cpp 和 b.exe 和正解 z.cpp 和 z.exe 2.寫乙個造資料的程式 shuju.cpp 和 shuju.e...