有時候在oj刷題目的時候,總是會遇到不知名bug,題目總不能ac,自己測試的一些資料又都能得出正確的結果,又或是直接暴力會tle,改了演算法,但是仍然wa,這時候進行程式對拍測試資料不失為乙個好辦法。程式對拍主要是通過資料生成器生成隨機資料,然後與正確程式跑出來的結果進行比對,雖然有時候資料很難構造,但是對於一般的題目卻能起到很到的作用。
通過乙個簡單的例子進行解釋:求兩個數之和。
兩個進行對拍的程式
#includeint main()資料生成器程式return 0;
} #includeint main()
return 0;
}
#include#include#include#includeint main()重要的一步:在儲存資料的位置新建乙個txt文字檔案,輸入如下內容,並把「.txt」的字尾名改為「.bat」,雙擊執行即可。return 0;
}
@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...