關於c 對拍的辦法

2022-05-20 11:56:25 字數 1662 閱讀 3258

眾所周知,在\(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...