第四章内容小节

第四章的学习过程中,我做了三道编程题,思路和代码不太难写,最难搞的就是测试程序时会超时,所以每一道都让我debug了很久很久,

但是我发现我有两道一直完成不了都是因为同一个问题————地址不明确导致程序运行超时!

 

 

1.作业那模式匹配的问题:我用的是KMP算法,写起来不难,可以照着书上去写,但是运行起来就会超时,然后我又把代码重新写了一遍,自己用纸和笔跑了一遍,

然后就是各种各样去测试我的代码在哪里出了问题,最后还是在同学的帮助下,我终于在凌晨2点发现了我自己的问题。

我创建了两个串,一个S一个T,但是这两个串我都没有给它们的长度赋值,所以每当程序运行到next数组的时候就会超时。

由此可见,一个小小的细节如果没有注意到的话,整个程序都会被影响!!!

 

 

2.第二个我做的题目是AI核心算法。(这个问题也是一个很神奇的问题我觉得)

首先是我读题没有读准,我一开始没看要把标点符号前的空格也去掉然后一直在debug测试点1。

然后继续debug“can you”->"I can"这个测试点。我之前是想做一个封装的函数“IsCanyou”,但是我发现字符串的传值这里会出现问题。字符串的输出和字符数组的输出不太一样,需要用T.c_str进行输出(然而我也不知道为什么hhh),

这个到封装函数里面并不会达到我想要的效果,于是我果断地直接把一大串判断写在了go函数里面……虽然有点难看……

嗯,最终我没有测试直接放PTA上面跑全部AC了。。

 

 

3.再然后是我昨晚开始写的稀疏矩阵的题目

这个题本人感觉有一点点小麻烦,因为书本上没有给出具体的实现过程,所以在我翻阅了大量大佬们写的博客之后,再加上自己天马行空的想象力,终于把这道题写完了!

十字链表的构建和初始化插入都是参考大佬写的,然后遍历找元素是完完全全我自己写出来的(写了还蛮久的)。。

自己写的部分当然就很多Bug了,比如说 其实结构体里面的内容有两种表示方法,一种是M.Rhead 另一种是M->Rhead。

我一开始觉得这两个是可以互换的,但是在打代码的时候却发现并不是这么回事儿。如果你在某个封装函数中,只能用->

但是如果把这段代码放到主函数中去就只能用" . "不然就会出现错误。

再然后就是我的p!我一开始其实是把cout<<p->i<<' '<<p->j;这一段放在了for语句的外面,所以我的程序一直都是超时的。直到刚刚我又重新看了这道题,我发现我的P的地址赋予是在for里面的,

也就是说,出了for语句之后,我的P仍然会是一个随机地址,所以会导致我的程序无法找到p->i和p->j而超时!

 

总结:要经常能注意到细节方面的东西,思路谁都有,但是真正能打出正确代码的人必然是思维逻辑非常严谨,非常细心的。

目标:下次做题目之前要先认真读题目,如果WA也不要紧,看看老师给的测试点是哪里再来有针对有方向地更改。争取以后写出来的代码更加严谨,更加简洁明了!

 

posted on 2019-04-14 12:24  香辣鸡腿  阅读(109)  评论(1编辑  收藏  举报

导航