有的題目會要求一次輸入多筆測資,例如:
TOJ 3
NTU judgegirl 80
常見初學者的寫法會將所有的資料讀入,存進陣列裡面,一個一個處理完之後再輸出。
但事實上不需要這麼做,你只需要每次讀入一個一組測資,直接輸出答案就行了!完全不需要浪費額外記憶體去開陣列。
以 TOJ 5 為例:
1 |
|
題目的output不是要求要一次輸出所有答案嗎?事實上並不是的。在你電腦裡面的terminal(或者cmd)中,輸入和輸出會有即時的互動,也就是說當你打完每一組測試資料,它就會立刻輸出答案,因此你會看到輸入和輸出湊在一起的情況。
在 Online Judge 中,輸入和輸出可以當成兩個檔案,因此先後順序是沒有關係的。
在你的電腦中,可以在terminal模擬類似的環境:
- 開啟terminal(在windows上則是cmd)。
- 使用
cd
命令切換到測資和執行檔所在的資料夾。 - 把要輸入的測試資料存成一個文字檔,例如
input.txt
, - 執行以下命令:
執行檔 < input.txt > output.txt
或者執行檔 < input.txt
,此處使用了 io redirection 的技巧,細節可以自行上網查詢。
我們把input.txt
作為程式的輸入資料,輸出的資料則存在output.txt
,在 Online Judge 中也是使用類似的方法實作。