coding中那些哭笑不得的神错误集合

NO.1 计数用的变量没有初始为0

 这个后面练熟了都还好,重复事故的机率不大。

案发现场:

NO.2 for循环复制粘贴下来没有改变量名

这个嘛,之前有没有改i,j这种循环变量的时候,后面练熟了犯错的机率不大,但也会有忘改终结条件那里的变量,

而且还查不出错

案发现场:这个是在做一道前缀和的题,复制粘贴下来,m忘改成了n,直接结果就是WA了而且还看不出来,而且样例坑,样例给的m=n。

coding中那些哭笑不得的神错误集合_第1张图片

NO.3 数据类型搞错

这个是学搜索(尤其迷宫)的时候犯的错,因为那些题定义了许多不同类型的变量(其实也没有很多,不过int,char,bool)

但是一旦出错就很难查到错,因为检查一般都是怀疑自己函数有没有问题,开头几行只要不报错一般都不会去查

案发现场:

coding中那些哭笑不得的神错误集合_第2张图片


NO.4 这个一言难尽,概括不出来,直接看过程吧

我是要做一道题(这个悲壮经历可以单独写一个博客出来了,有空一定要写关于这道题的博客),是CCF上的,不算很难,比我之前博客里写的那些还要简单,自己体会一下

coding中那些哭笑不得的神错误集合_第3张图片

然后这是我做题的全过程,也请自行体会一下:

coding中那些哭笑不得的神错误集合_第4张图片

第一次时间超限后优化了一下

n为奇数时,必有两奇数相邻,和为偶数,是合数(2除外,但2在此题中不可能为两数之和)所以不构成素数环,在刚输入n时就判断了一下奇偶性,并且任意一个合法解的话,我固定了第一个数一定为1.

可是第二次就答案错误了,于是我自己出了一组数据,发现我从2开始的话第一个数会莫名变成0,可是我标记了1的呐(后来才发现是因为愚蠢的我没有将数组1号元素赋值为1),于是就老老实实地从1开始,反正也多不了多少时间。

这么改了之后就变TLE了,于是我开始找缩时间的地方,于是发现了前面没有给1号元素赋值的愚蠢问题,就又改回2开始了

虽然多了10分,可是仍然超时,当我在搜索函数里找不到缩时间的地方之后,就在其他地方找,然后就发现了判断素数那儿没有用sqrt,于是加上了

然后就变成了WA,回去查了一遍判断素数那儿,发现没加等号,加上再交,仍然超时。

查了半天没查出问题来的我就开始试数据,用20测得时候发现答案都已经输出来了可是它还等了几秒才结束程序。当时我还有些纳闷,我是找到一组解之后就马上retuen搜索函数,直接返回主函数,主函数就只剩判断标记是否有解了,讲道理是不会浪费时间的。但尽管如此,我还是将return改成了exit,然后果断AC。


NO.5 多个数据输出没换行

有时候题目是T组数据,通常是一边读入一边输出,忘记打空格的话看不出来。而且交上去是答案错误,因为输出的时候没换行没空格数字就是挤在一起的,比如说1 2 3 4就变成了1234一个数字,所以就会出现这样的事情:

coding中那些哭笑不得的神错误集合_第5张图片

案发现场


NO.6 数组定义小了

有时候做题的时候没怎么在意数组的定义,有的时候甚至是直接复制的另外一道题的代码框架,所以很多时候都没有检查到数组的大小。如同NO.1里的一样,一般WA了都是去看函数有没有问题。不过这也提醒我们检查的时候要从头到尾依次检查,用肉眼检查不出这种低级错误之后再进行调试。

案发现场:

coding中那些哭笑不得的神错误集合_第6张图片

(注意看我的mark和map)




目前想到的错就这么多,后面再续吧。。。

未完待续...(不过我希望不要再续了)

你可能感兴趣的:(怒刷水题找信心)