寫 online judge 時難以發覺的 bug

Black Swan
1 min readMay 18, 2020

--

有些 online judge (或者說大部分的 online judge) 不像 leetcode,程式有錯的話告訴你錯哪筆測資,記錄一下我找很久的各種 bug...... 語言為 C/C++,主要都是在 UVA judge 踩到的,不確定其他的 judge 行為是不是一樣。

  1. main function 要回傳 0,否則會 runtime error (這個應該很初學)。
  2. 有回傳值的 function (不是 void) 要有回傳值,否則會 runtime error。Compile 會過,因為他是 undefined behavior,只要不去用它的回傳值怎麼測都測不出有問題......
  3. scanf 用 %d 讀浮點數會 time limit exceed,小心範例測資都是整數但是題目沒說是整數的情況。
  4. C++98 的 list::size 是 O(n),C++11 的才是 O(1) (reference)。
  5. 沒有使用亂數的情況下一樣的輸入卻得到不同輸出 (online judge 應該很少用到亂數),或是沒改到變數值 (例如:加一行 pritnf) 輸出卻不一樣,可能是某個用到的變數沒有初始化。

--

--