自動AC機


  首先,本博客只供娛樂,請不要用於大型考試中.如果被告了也不要怪我.

  考慮評測的原理:10組或20組或更多的數據放在data文件夾里,lemon每次用一個.in文件讀入到你的程序里,你的程序會跑出來答案到.out里,lemon再與data里的.out文件進行比對.

  而這個可能稱得上算法的東西主要是通過枚舉找到當前測試的是哪一組數據,然后去data文件夾里找到.out文件並讀入答案,輸出答案.這樣當然是對的.

  首先深刻理解freopen這個函數:

freopen("123.in","r",stdin);
freopen(const char*, const char*, FILE*) 

 

  前兩個都帶*,說明是指針啊.也就是說我們平常用的"123.in"都是文件地址的指針.(最后一個大概是說明類型的,先不管).

  那有沒有想過為什么可以直接打開這個叫123.in的文件呢?因為它與.cpp在同一個文件夾里.那么現在如何打開指定位置的文件呢?給出指定的文件位置即可.比如這個123.in可以這樣寫.

freopen("C:\\Users\\Administrator\\Desktop\\當前代碼\\123\\123.in","r",stdin);

  這里都是兩個"\\",原因在於,別的沒有問題,只有C:后如果用\的話過不了編譯,不知道為什么.

  這樣的話就可以開始寫題了.

  昨天做了一道名為ball的題,以此為例說明一下.

  首先還是正經的把數據讀入進來.

  

  然后要清楚in文件的命名規則.在評測機的文件地址是什么,命名方式是1.in還是01.in?

  大多是情況下是不清楚的,我們需要一個函數istream,長得很像某個頭文件對吧.這個函數需要頭文件

#include<fstream>

  然后我們來判斷你要打開的文件是否存在,否則會導致程序運行時錯誤.

  

 

 

 

  暫時沒有什么好的方法,只好復制個30次以確保01-09,1-9,10-20都能試一遍.

  

  1.不用fclose好像也沒有問題.

  2.init()里一定要把所有的數據都輸入進來.

  3.好像不能用fread快讀,用getchar也不差啥.

  4.交互題就算了吧?

  5.題答題不好弄吧?


免責聲明!

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



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