每次對拍都是查http://blog.csdn.net/code12hour/article/details/51252457這里。一來二去就會寫了。
由於對Windows系統並不了解(Linux就更不了解了),所以口胡可能有紕漏歡迎指正。
首先新建一個文件夾“對拍”。 ——這個文件夾叫什么放在哪都無關緊要
在這個文件夾下放入制造數據的程序data.exe,你的程序test.exe,標程std.exe。 ——其它文件在這個文件夾中也無所謂,重名也沒事。比如可以放一個std.cpp
一般編譯器都能通過data.cpp生成data.exe。
data.cpp的寫法
#include<iostream>//輸入輸出
#include<ctime>//time()
using namespace std; int main(){ srand(time(NULL)); //比如生成一個長度隨機的10000以內序列,輸出長度n與ai~an
int n=rand()<<15|rand();//這樣造出的rand數更隨機
cout<<n<<endl; while(n--){ cout<<(rand()<<15|rand())%10000<<' '; //cout<<(rand()<<15|rand())%10000+1<<' '; //保證數據在[0,9999]。如果要[1,10000],就用第二行的
} return 0; }
最重要的就是“對拍.bat”了
:again data>in.txt std<in.txt>stdout.txt test<in.txt>testout.txt fc stdout.txt testout.txt if not errorlevel 1 goto again pause
data,std,test都是取決於exe的文件名的。系統會先用你的data.exe生成一個in.txt,再用in.txt作為輸入傳給test.exe和std.exe,運行后會得到stdout.txt,testout.txt。
比較無差異就會一直進行下去,直到出現差異就pause,文件夾中會有這個錯誤點的in.txt,testout.txt,stdout.txt。
如果一直無差異可能你就已經A了這道題!
但數據范圍要把控好。
綜上。完。