函式遞迴呼叫(二分法),三元表示式,匿名函式,模組
阿新 • • 發佈:2020-07-23
前言
本文預設系統為Windows系列系統。
定義
當我們的程式過了樣例,是否意味著它一定能AC呢?顯然大多數情況下都是不行的。所以我們需要自己設計一些資料來測試我們的程式,但有的題目資料很大,我們肉眼無法看出程式計算的結果是否正確,手工計算又非常耗時,在緊張的比賽中,我們該怎麼應對呢?於是有了對拍。 對拍簡單的說就是當你寫完一個題目的程式以後,再寫一個暴力求解該題目的程式,然後自己生成一些測試資料,看同樣的資料,兩個程式輸出的結果是否相同,不同意味著被對拍的程式有問題。以此來幫助你修改程式,提高通過率的方法,我們稱為對拍。
過程
-
準備好正解程式、暴力程式。
-
寫生成隨機資料的程式。這裡提供模板:
#include<bits/stdc++.h> using namespace std; int main() { srand(clock()); //... }
-
寫windows對拍檔案。這裡提供模板:
#include<bits/stdc++.h> #include<windows.h> using namespace std; int main() { while(1) { system("make.exe > date.txt");//make.exe為資料生成器,date.txt為生成資料 system("1.exe < data.txt > 1.txt");//1.exe為暴力程式,1.txt為對應輸出檔案 system("2.exe < date.txt > 2.txt");//2.exe為自己的程式,2.txt類似於上 if(system("fc a.txt b.txt")) {//對比,true為有差異 printf("Error!"); break; } } system("pause"); return 0; }
注意事項
- 注意輸出格式。
- 當對拍檔案停下時,data.txt即為發生錯誤的樣例。
- 編資料時最好不要用原題資料,暴力會卡死。畢竟只是保證正確性,資料小一點就好。