ACM OJ常见错误以及解决方法

本文详细解析了在线判题系统中常见的错误代码,包括WrongAnswer、RuntimeError、PresentationError、TimeLimitExceeded、OutputLimitExceeded、MemoryLimitExceeded、CompileError、FloatingPointError、SegmentationFault和RestrictedFunction。强调了这些错误的常见原因,并提醒参赛者在比赛前务必熟悉各类错误代码,以便快速定位并修复问题。同时,文章也提及了编译错误的常见因素,如选择错误的编译器或头文件问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不同 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 () 等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值