編譯錯誤(Complie Error)
這說明你的代碼本身就沒有通過OJ的語法檢查,請根據(jù)OJ返回的錯誤詳情修改你的代碼。
注意,由于OJ采用和VC6.0不同的編譯器,以下幾點(diǎn)要求必須謹(jǐn)記:
- iostream頭文件不含.h(#include<iostream>)
- 主函數(shù)類型必須為整型(int main())
- 不可使用隨機(jī)數(shù)random()函數(shù),以及fflush()函數(shù)
答案錯誤(Wrong Answer)
此類錯誤常見于輸出的數(shù)據(jù)錯誤了,你所寫的程序必須要經(jīng)得起任何數(shù)據(jù)的測試才能算通過,而不是僅僅通過了樣例測試
運(yùn)行時錯誤(Runtime Error)
此類錯誤在運(yùn)行時產(chǎn)生,往往是由于在程序的運(yùn)行過程中出現(xiàn)了不可計算或不可操作的語句。比如0作為除數(shù)的語句,以及對野指針進(jìn)行解引用賦值等等。出現(xiàn)這類錯誤你需要對可能出現(xiàn)錯誤的地方進(jìn)行定位,然后排查錯誤。
例如,以下的代碼會出現(xiàn)運(yùn)行時錯誤
#include <iostream>
using namespace std;
int main(){
int a=1,b=0;
printf("%d", a/b); //0作為除數(shù)
return 0;
}
格式錯誤(Presentation Error)
此類錯誤常見于輸出了錯誤數(shù)量的空格或者換行。建議在做題之前先看好題目要求,以及觀察樣例輸出的格式,確保空格數(shù)量以及換行符(\n)數(shù)量的匹配,就可以避免此類問題出現(xiàn)。
例如,要求輸出的格式為
Very Good!
// Very前面有8個空格 Good前面有4個
那么對應(yīng)的輸出語句應(yīng)該為
cout<<" Very Good!"<<endl;
同理Very前面一樣有8個空格,Good前面有4個空格
只有雙引號內(nèi)的字符串才會被輸出,所以不要把空格打在雙引號的外面。
時間超限(Time Limit Exceeded)
出現(xiàn)此類錯誤一般是程序沒有正確的返回語句(return 0;)或者陷入了死循環(huán)(while,for,do...while)導(dǎo)致的。一般出現(xiàn)此類錯誤可以通過單步調(diào)試進(jìn)行排查。
例如以下程序就會陷入死循環(huán)
#include <iostream>
using namespace std;
int main(){
int a=0;
while(a<100){
printf("%d", a); //由于a的值永遠(yuǎn)為0,導(dǎo)致無法正常結(jié)束,OJ判定為超時
}
return 0;
}
內(nèi)存超限(Memory Limit Exceeded)
雖然這類錯誤不常見,但是還是提一提,每道題目都會有內(nèi)存限制(通常為1MB),代表了你這個程序所能使用的最大內(nèi)存數(shù)量,那么你開數(shù)組的時候,就需要控制在百萬級別以內(nèi)。