對拍程序的寫法


每次對拍都是查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了這道題!

但數據范圍要把控好。

綜上。完。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM