ACM程式對拍

2022-03-03 19:23:19 字數 1231 閱讀 2347

有時候在oj刷題目的時候,總是會遇到不知名bug,題目總不能ac,自己測試的一些資料又都能得出正確的結果,又或是直接暴力會tle,改了演算法,但是仍然wa,這時候進行程式對拍測試資料不失為乙個好辦法。程式對拍主要是通過資料生成器生成隨機資料,然後與正確程式跑出來的結果進行比對,雖然有時候資料很難構造,但是對於一般的題目卻能起到很到的作用。

通過乙個簡單的例子進行解釋:求兩個數之和。

兩個進行對拍的程式

#includeint main()

return 0;

} #includeint main()

return 0;

}

資料生成器程式

#include#include#include#includeint main()

return 0;

}

重要的一步:在儲存資料的位置新建乙個txt文字檔案,輸入如下內容,並把「.txt」的字尾名改為「.bat」,雙擊執行即可。

@echo off

fc 1.txt 2.txt

pause

二者結果若無差異,顯示為

若有差異,顯示為

幾種常用的資料生成程式:

//生成int型資料

#include#include#include#includeint main()

return 0;

}//生成兩位小數資料

#include#include#include#includeint main()

return 0;

}//生成字串

#include#include#include#includeint main()

return 0;

}

最後再通過乙個例子加深對資料生成器的理解,假設有一組輸入資料如下:

資料生成器可寫成如下:

#include#include#include#includeconst int maxn = 1000000000;

int main()

else if (rand()%t + 2 == 2)

else if (rand()%t + 3 == 3)

}printf("end");

return 0;

}

ACM程式對拍

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

ACM 中的對拍程式

所謂對拍,就是隨機生成資料,然後用乙個肯定正確的暴力演算法的程式,去測試乙個要提交的程式。由於比賽中一般使用 linux 系統,所以本篇部落格的 都是 linux 下的程式 其實最簡單的方式是寫指令碼。這裡介紹的是用選手最熟悉的 c 語言寫對拍程式。假設要提交的程式為 sol.cpp,暴力的程式為 ...

對拍程式寫法

一口毒奶 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...