PAT基础题总结

PAT的基础题做完以后的一些总结与体会。

1.复习基础知识

写代码更加熟练,复习和学习了很多STL函数,字符串操作,结构体操作。如数组删除重复数据,排序的降序升序算法,元素查找算法。

2.暴露问题:

a.忘记一些头文件的写法

考试的时候不能带纸质资料,还是要多记一记,忘记不常用的公式,如保留小数点。理解能力比较差,题目意思不能很好很快的理解,题目经常倒装,或者、均,如果,各种混在一起,稍有不慎容易理解错误。

#include <iomanip> 
#include <sstream>  // 字符转数字
#include <algorithm> //  算法头文件

cout<<setiosflags(ios::right)<<setw(10)<<123<<endl;  // 右对齐
cout<<setiosflags(ios::fixed)<<setprecision(3)<<1/3; // 保留三位小数

b.谨记不同数据类型所表示的数据范围

主要是数字,然后字符转数字也很常用。像1016部分A+B (15),本可以用long型存储,直接相加的问题,因为对数据表示范围误解,用数组来存储数据,最后的加法还需要自己写算法来逐位相加,考虑进位不进位,虽然不复杂,但是已浪费相当多时间,而且还有小细节没有考虑到,一直有一个答案错误。改成long后直接相加十分简单。

c.由此也得到另一个信息

该题的分值并不高,不会设计的特别复杂,当写的觉得很难实现的时候,不要一个劲的死钻自己的代码,反过头来再次审题,看看是否有遗漏,甚至可以考虑重新开始,以一种全新的思路来解题,这样看似花费时间,然而有时候却只需要花较少的时间即可得到全部的分数,而不会被细节没考虑得不到满分。

d.注意 if 与 else 匹配

宁愿写出else if后的条件也不要省略直接写个else,这一题就给自己挖了这样的坑PAT 1012. 数字分类 (20)

3.重新理解单步调试

以前很少用单步调试,直接ctrl+F5运行,测试数据,看运行结果,改程序;这样的方法还是不容易暴露问题的具体位置。
单步调试可以跟着程序一步一步走,一方面能更好的理解问题,一方面也能理解程序代码逻辑上的错误。
就像有时候一些语句的位置写错了,很要命,半天看不出来,单步调试一下子就可以找出不对。

4.了解了PAT题目的一些基本套路

比如输出的格式,测试的方法,题目表达的方式。在考试的时候可以考虑主要的分值拿到以后,有一点点丢分是可以容忍的,毕竟时间有限,可能也比较紧张,短时间内思维无法从不周全的思路中跳出来,一直纠结于两分的点不是十分值得。

5.要善于找规律

经常需要递推找出规律

6.思维清晰

很多时候很多题目不是特别难于解决,而是要考虑的东西比较多,或者是绕来绕去,这时候就需要思维清晰,不行就在纸上画一画,对着电脑(代码)想有时候效果不是特别好。

7.养成良好的编码

养成良好的代码习惯有助于代码阅读、代码检查。
比如适当的注释,毕竟是考试不是做项目,是给自己阅读的,也没必要写非常详细的代码注释,只需要在非常关键容易混淆的地方注释一些。自己能理解就好了。
函数代码块之间尽量留有空行,让代码更加舒展,方便自己快速定位所需的代码块进行检查。
然后就是命名规范了,尽量养成自己的习惯,比如输入用例的个数我习惯用n来表示,每次输入的数字用num表示,循环中的计数临时变量用temp,用于判断的函数jugg()等等,这样也能有效减少变量,方便检查阅读。

8.注意内存大小限制

有时候看似开辟一个大数组就可以解决,但是大数组可能超出C++内存限制,根本无法实现。可以改用链表、动态数组、容器等实现。

9.注意时间花销

在数据量较多时,输出的时候使用cout会很慢,这时候应该用C语言的输出方法;printf

10.先构思再编程

应先将题目全部看完,提供的测试用例走一遍,对题目的流程完全清楚以后,再考虑解答题目,先想好要使用到的数据结构,是否可行,复杂度等等,然后才考虑编码。否则没有构思好直接编码后面发现这样解决不了问题就会浪费大量时间,还没有任何收获。

坚持原创技术分享,您的支持将鼓励我继续创作!