我是靠谱客的博主 爱听歌季节,最近开发中收集的这篇文章主要介绍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 () 等

最后

以上就是爱听歌季节为你收集整理的ACM OJ常见错误以及解决方法的全部内容,希望文章能够帮你解决ACM OJ常见错误以及解决方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部