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。

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系统,少添加了头文件。

Floating Point Error:除零错误

有些OJ除零错误有专门的错误代码

Segmentation Fault:段错误

类似RE。

1.缓冲区溢出,也就是你访问 了非法内存,,或者在C/C++中访问了空指针等等。

2.堆栈溢出。

Restricted Function:受限函数

调用了不该调用的函数,如fork(),execv(),socket()等

原文地址:https://www.cnblogs.com/komet/p/15123934.html