前言

​ 有时候我们做题会出现WA,RE,PE等错误。这可能是因为我们在细节上出错。这里我就罗列一些我在做题时常见的错误。希望可以给你一点借鉴。


Presentation Error

中文意思:输出格式错误。顾名思义,它就表示你输出结果的格式错误。

出错情况:

​ (1) 有时候题目虽然没有要求最后一个数子不带空格但是它给出的结果却会是这样。

​ (2) 你忘记了输出空格或者换行。

解决方法:

​ 检查你的输出是否符合题意,再检查一下题目的输出样式,查明是否最后一个不带空格。


Compilation Error

中文意思:编译错误。这个错误就是表示你的代码编译不通过。

出错情况:

​ (1) 你的代码有语法错误。

​ (2) 你的编译器和oj上的编译器不一样。因此某些你编译器上支持的语法在oj上的编译器上不支持,最终导致了CE错。

解决方法:

​ 一般oj上都有提示你错在哪里,你只要按照oj的提示修改就好了。

​ 如果oj上面没有提示。那你只能先去你本地的编译器上调试一下,有错就修改。否则就是oj上的编译器和你的编译器支持的语法不一样。如果是这样的话,我只能建议你把所有的头文件都按上去并且能不调用函数尽量不调用。当然这只是为了过题目。


Wrong Answer

中文意思:答案错误。即你的结果和题目的结果不一致。

出错情况:

​ (1) 你解题思路错了。

​ (2) 题目的某些要求你没有满足。

​ (3) 某些oj把PE当做WA处理。

解决方法:

​ 先看看自己的代码是不是漏掉了什么要求(包括输出的格式)。如果不是自己把要求弄错的话,那就只能说是你的思路错了那你只能换一个思路去写题目。


Time Limit Exceeded

中文意思:超出时间限制。即你的代码对于摸一个测试的时间复杂度过大以至于超过了题目的要求。

出错情况:

​ (1) 你解题思路错了。

​ (2) 你的代码使用了时间复杂度较大的函数。比如c++cin函数就会比scanf函数时间复杂度大。

​ (3) 你的代码写的过于复杂。

解决方法:

​ 先将你代码中时间复杂度大的函数换成时间复杂度小的,比如c++cin换成scanf。如果还是不行,你只能换一个解题思路或者优化你的代码。


Runtime Error(ACCESS_VIOLATION)

中文意思:运行时错误(访问_违反)。即你的代码运行出错。

出错情况:

​ (1) 你的代码访问了一个不存在的地址。比如你要访问a[-1]

​ (2) 你的代码开了过大数组。

解决方法:

​ 对于数组:先查看你的代码中数组开的是否过大,一般过大编译不会让你过的。但是也有例外。全局变量的数组会比在某个函数中的数组开的区间更大。你可以尝试一下把开大区间的数组弄成全局变量。再查看一下你的代码是否访问了你数组区间外的下标。比如-1这样的。如果这样都不是,那你就要想想其他方面来避免大数组的使用。

​ 对于指针:查看一下你的指针是否会指向一些已经不存在的地址。