开始先说最重要心得体会:
写代码前,先在纸上写写画画,写下伪码,理清思路,别上来就敲代码,效率极低还易出现bug。
2019-12-12到2020-01-17,用C++刷完了PAT乙级95道题目,第682个加入满分行列。
题目链接:
PAT乙级真题
为每道题撰写了相应CSDN博客:
Zhang35的CSDN个人主页
代码上传到了Github:
PAT-Basic-Level.git
每5道题是一套,分值为15、20、20、20、25,相当于一次PAT乙级考试。题目大都不难,因为乙级不考察数据结构,感觉乙级一道题,基本等于算法分析中的一句伪代码……
其中也有部分比较麻烦的题目,有些测试点很难通过,多亏了柳神的代码可以参考。她代码风格简洁、规范,博客整理的井井有条,对STL库的运用更是十分纯熟。柳神博客:
柳婼 の blog
柳婼的CSDN个人主页
后来每做一道题,无论对错,都会再搜柳神的代码,看有无可优化的地方。下面可能是我唯一一道写的比柳神简单点的:
PAT乙级真题 1087 有多少不同的值 C++实现(求出计算公式,1行代码搞定)
比较难的或代表性的有:
PAT乙级真题 1025 反转链表
PAT乙级真题 1034 有理数四则运算 C++实现(两个int相乘结果应用long long存储)
PAT乙级真题 1035 插入与归并
PAT乙级真题 1040 有几个PAT C++实现
PAT乙级真题 1045 快速排序 C++实现
PAT乙级真题 1050 螺旋矩阵 C++实现
PAT乙级真题 1070 结绳 C++实现(类似求哈夫曼树)
PAT乙级真题 1089 狼人杀-简单版 C++实现(假设+遍历暴力求解)
遇到神坑悬而未解的有:
PAT乙级真题 1030 完美数列 C++实现(测试点4超时神坑)
PAT乙级真题 1035 插入与归并 C++实现(求解答:测试点4浮点错误,但不知道为啥还是得了满分)
一开始基本坚持每天1道,并到后面越刷越快,最多的一天是2020-01-14,刷了9道。收获是熟悉了网上刷题常见套路及C++ STL库的用法。下面总结一些常用操作和技巧。
常用函数
isPrime()
#include <cmath>
bool isPrime(int n){
//用pow(n, 0.5)会超时,sqrt效率大增
for (int i=2; i<=sqrt(n); i++){
if (n%i==0){
return false;
}
}
return true;
}
isNumber()
用sstream判断字符串是否为数字
#include<sstream>
bool isNumber