如何編寫對拍程式?

2021-08-04 22:58:35 字數 1286 閱讀 9395

當你的乙個程式提交後發現答案錯誤了,但又不知道錯哪,那麼你可以找乙個能夠ac的程式,與你的程式輸入相同的資料,並對答案進行比較。

然而,編乙個測試資料通常是非常麻煩的事。我們可以編寫乙個對拍程式,來讓計算機來做這種麻煩的事。

你自己的源程式。在這裡,我是用自己編寫的歸併排序程式作為演示。

// testsort.cpp

#include using namespace std;

void testsort(int * arr, int istart, int iend, int isize)

for (int i = istart; i < iend; i++)

arr[i] = arrtmp[i];

}int main()

乙個保證正確的程式。注意這個程式的輸入、輸出格式應與上面的程式相同。

// sort.cpp

#include #include using namespace std;

int main()

測試資料生成程式。

// data.cpp

#include #include #include using namespace std;

int main()

注意:srand函式需要,time函式需要。這兩個函式的用法這裡不做介紹。

對拍可以使用批處理和c++程式實現。但據說c++程式會稍微快一點。這裡講解c++程式的寫法。

#include #include using namespace std;

int main()

cout << "error!" << endl;

system("pause");

return 0;

}

注意:事實上,除了,system函式在很多標頭檔案中都可以找到,例如。

將四個程式全部編譯成可執行檔案並且放置在相同目錄下,執行compare.exe。

等一會,如果你看到下面的介面:

那麼你就可以開啟程式相同目錄下的「data.txt」,看看到底是什麼樣資料使你通過不了。

如果你的程式正確,你會一直看到下面的介面:

對拍程式寫法

一口毒奶 bat的寫法 echo off loop rand.exe in txt mycode.exe in txt myout.txt baoli.exe in txt baoliout.txt fc myout.txt baoliout.txt if not errorlevel 1 goto...

ACM程式對拍

刷過acm題的同學應該都有這種體會,感覺自己已經考慮的很充分了,但就是一直wa,這時候,如果有乙份能夠保證100 正確的 再加上題目資料比較好利用隨機數創造時,便可以使用對拍來找到錯在哪些資料上了。我們需要三個exe檔案加乙個bat檔案再加兩個txt檔案。首先我們先建立乙個資料夾,在資料夾裡新建乙個...

對拍程式c

對拍就是你給兩個程式和乙個隨機資料生成器,然後系統用隨機資料生成器的輸出資料作為你這兩個程式的輸入,比較這兩個程式的輸出,找到這兩個程式輸出不一樣的一組資料。data.exe是資料生成程式 test.exe是你需要檢查的程式 ac.exe是正確的程式 這三個程式需要放在同一目錄下,執行以下對拍程式即...