# Online Jugde 線上解題系統
[toc]
## 線上解題系統
**Online Jugde** 簡稱OJ,中文為「線上解題系統」。

上有許多題目,將程式依照題意寫出,丟上 OJ,它就會幫你的 code 判斷是否正確。題目會給你一個輸入(input),然後要你給一個對應的輸出(output),而中間的問號,即是我們需要寫出的程式。
若是 OJ 判斷完全正確,就會顯示 AC,錯誤則顯示 NA、WA 等。常見者說明如下:
- **AC** (Accept):通過 :100:
- **NA** (Not Accept):未通過所有測資
- **WA** (Wrong Answer):答案錯誤
- **TLE** (Time Limit Exceed):執行時間超過限制
- **CE** (Compile Error):編譯錯誤
- **RE** (Runtime Error):執行時錯誤,多為記憶體配置錯誤(如:使用了超過陣列大小的位置)
並不是每個 OJ 都用這套,但在說明的地方都可以找到簡寫對應的說明。
> 測資:測試資料的簡稱,每筆測資會包含輸入與輸出,用來測試上傳的程式是否正確。
## 題目組成
直接來看看一題 :point_right: [連結](https://zerojudge.tw/ShowProblem?problemid=a002)
### 內容/題幹(content)
有些題幹會很長很長,甚至像在考閱讀題,因此可以先看範例測資,從輸入和輸出中尋找關聯性來猜題。若從測資看不出題目要什麼,再回來看題目。
### 輸入說明(input format)
- 測資的格式
- 測資的範圍
### 輸出說明(output format)
- 輸出的格式
- 時間限制(time limit)
- 記憶體限制(memory limit)
### 範例測資(sample test data)
- 範例輸入(sample input)
- 範例輸出(sample output)
範例測資正確,並不代表所撰寫的程式完全正確,因此不可過度依賴範例測資。而輸出的答案,是出題者設好的,所以有機會遇到題目本身的輸出就是錯誤,在大神級的比賽中比較常見。同樣的,也會有程式寫的不完全,卻得到 AC 的情況,稱之假解。因此建議初學者找較熱門的題目來練習,比較不容易踩雷。
## [HWSH Judge](http://203.64.159.117/)
- 中文
- 可用語言: C、 C++、JAVA、PYTHON3
## 適合初學者的 OJ
### [zorejudge 高中生程式解題系統](https://zerojudge.tw/)
- 中文
- 可用語言: C、 C++、JAVA、PYTHON3
- 說明:
1. 進入後點擊右上角的「註冊」(可直接用 google 帳號)
1. 登入後進入「分類題庫」,尋找適合自己的題目
1. 程式寫完後滑到題目的下方有一排綠色的按鈕,選「送出解題」
1. 點選自己使用的語言,並將程式碼貼在框框中
1. 「送出程式碼」等待結果
1. 若結果非 AC,可點開「評分結果」那排的藍字,會有詳細的錯誤原因
### [greenjudge 台中女中程式解題系統](http://www.tcgs.tc.edu.tw:1218/)
- 中文
- 可用程式語言: C、 C++
## 較進階的 OJ
### [Codeforces](https://codeforces.com/)
- 國內外知名的程式競賽網站,國內競程圈的主流
別人寫的 :point_right: [Codeforces 快速入門 (簡介、介紹、教學)](https://changyuheng.github.io/2010/codeforces-quick-start.html)
### [CodeWars](https://codewars.com/)
- 英文
- 可用程式語言:好多
### [HackerRank](https://www.hackerrank.com/)
- 英文
- 可用程式語言:好多
- 平台上有教學課程,可跟著教學一步一步的解題