0
点赞
收藏
分享

微信扫一扫

大神养成之路上的经验教训,持续不定期更新ing(2)


1、已经刷了接近两百题了,先来谈谈自己的体会。目前感觉自己码代码的速度比之前快了不少,这是很显然的。你说你玩个街机游戏,玩的时间越久是不是不看键盘都知道怎么发招,哈哈!量变引起质变,老马说的理论还是有一定实际意义的,因为之前做的这些题基本不涉及数据结构及算法导论的知识或涉及的很少,这主要是考察纯代码设计能力,而PAT甲级要考的并不止这个,我的路还很漫长啊,不扯淡了,下面说说在练习过程中遇到的一些小问题和技巧。

2、在练习过程中一个很突出的问题是,思路有但实现起来很复杂。这样往往是对语言的掌握程度并不够,就比如说那个判断输入的数据是不是-1000到1000之间且最多保留两位小数的纯实数时,若你不知道sscanf和sprintf两个函数的用法会费很长时间的,最后还不一定能做出来,所以建议在做题之前将语言基础打好,巧妇难为无米之炊啊!

3、在练习过程中还遇到的一个问题,也许只在像我这种执迷于每个题都用STL的人中出现,那就是太过依赖于STL,STL对于有些题并不是那么有效,比如出现考hashtable这样的题,直接声明一个大数组就行了,然后用fill函数进行初始化即可。还有很多题目往往是在时间上有很高的要求,比如说题目给数据的范围不超过10的5次方,那么整个程序的时间复杂度要控制在O(nlogn)以内,否则至少一个测试点会超时。这时候就该想想有不有能一次遍历就能处理好数据的方法,找数字的规律啊,累加存储等等,尽量换个角度去分析问题,不要让题目牵着鼻子走。比如那个有几个PAT的问题,首先以P来考虑的话,你又得去考虑P后面有几个A,并且又要考虑A后面有几个T,这样的话很复杂。但换个角度单从A来考虑,那么对于每一个A只需知道它左边有几个P和右边有几个T就好办了。反正对于我们解题来说,我觉得一定要灵活处理,标准的答案肯定是思路清晰并且代码量并不是很大的。

4、还有一点就是一定要知难而退。我觉得做题并不只是为了检验自己的能力,而更重要的是它能让我们的能力进一步提升。所以当遇到半天都想不出来思路的题时,直接去网上搜别人的题解就行,看看别人怎么做的。当然不要单看一个,要看那些思路比较清晰且代码量不大的,并好好体会别人的思路,然后内化成我们自己的东西,这样我们就能一点点提升。题目不会做没有关系,但知道怎么做后就需要对这一类题有一个清晰的头脑。任何东西都是从无到有,从简单到复杂的。你觉得自己什么题都应该会做,那你还练个什么,要只知道自己还有很多不足之处才能不断提升自己。抱有自己什么题都应该会做的念头对自己没什么好处,这样很浪费时间,效率也不高。所以一定要知难而退,稳步提升自己是王道。

举报

相关推荐

0 条评论