ACM OJ常見錯誤以及解決方法


不同OJ有不同的錯誤代碼,有些OJ沒有PE,SE啥的,甚至有沒有TLE,RE的OJ,具體的要根據OJ分析,最好比賽前要測試下錯誤代碼的種類,方便賽時找bug。

Wrong Answer :答案錯誤

輸出的答案錯誤,具體問題各不相同,大概有這幾種情況

1.代碼哪里寫出bug了,代碼功能與自己想實現的功能相異。

2.解題邏輯和思路錯誤。

3.特殊情況沒有處理,比如0,1,2和最大值這種邊界值沒有考慮。

4.空間開的不夠大,造成越界,但越界並沒有進行修改,或者修改的數據不是關鍵數據,導致不觸發RE,但因為訪問或者修改的錯誤的數據,導致輸出結果錯誤。

 

Runtime Error :運行時錯誤

你的程序在運行的時候出錯了,異常終止了。

1.越界,想從一些非法的地址空間讀取或向其中寫入內容。

2.除0或模0錯誤

3.過多的申請棧內存導致棧溢出,如無限或過多的遞歸,在main函數中申請空間(此項由於不同OJ設置可能會有出入,有些OJ堆棧內存共享)。

4.使用STL的非法操作,比如從空stack中取top,越界訪問vector。

 

Presentation Error :輸出格式錯誤

答案正確但沒按題目要求輸出,注意讀題,或者行末空格,和最后一行輸出的換行。

 

Time Limit Exceeded :時間超限

程序運行時間太長了,超過了對應題目的時間限制。

1.代碼無限循環。

2.算法復雜度過大。

 

Output Limit Exceeded:輸出超限

程序輸出了太多的內容了,超過了OJ的限制。

 

Memory Limit Exceeded:內存超限

程序運行所用的內存太多了,超過了對應題目的限制。

1.內存空間申請過大。

2.在有些oj(cf,洛谷)中,堆棧共享內存空間,這時當你出現過多的遞歸這種大量的棧內存使用的時候,不會棧溢出導致RE,而是內存超限導致MLE。


Compile Error :編譯錯誤

程序編譯錯誤

1.編譯器選取錯誤,使用高版本的特性,卻使用低版本編譯器。

2.頭文件問題,使用window系統的頭文件,但OJ卻是linux系統,少添加了頭文件。

3.語法錯誤

 

Floating Point Error:除零錯誤

有些OJ除零錯誤有專門的錯誤代碼

 

Segmentation Fault:段錯誤

類似RE。

1.緩沖區溢出,也就是你訪問 了非法內存,,或者在C/C++中訪問了空指針等等。

2.堆棧溢出。

 

Restricted Function:受限函數

調用了不該調用的函數,如fork(),execv(),socket()等

 


免責聲明!

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



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