PAT考试的考纲

一。

考纲里要求掌握的算法为:哈希映射、并查集、最短路径、拓扑排序、关键路径、贪心、深度优先搜索、广度优先搜索、回溯剪枝等。

1.哈希映射:一般会用map和unordered_map就好。此外,比如说题目固定了关键字为4个大写字母,那么可以把关键字看成26进制数,这样就能把字符串转换为int型数据处理,提高程序运行速度。当然基本概念也不能忘,解决哈希冲突的基础方法要理解,包括开放地址法(线性探测、平方探测)和链地址法(开放定址法)。

2.并查集:主要就是掌握findfather函数(找到某节点所在集合的“根”)。压缩路径的函数如下:

int findfather(int a){
  if(a!=father[a]{
   father[a]=findfather(father[a]);
  }
  return father[a];
}

3.最短路径:主要掌握dijkstra+DFS。如果出现了负边权,就用bellman-ford(尚未考过)。

4.拓扑排序、关键路径:可以做做PTA上的 Data Structures and Algorithms (English)题目集7-12和7-18,数据结构与算法题目集(中文)7-11。

5.贪心:考的很少。印象比较深的是甲级题库1033 To Fill or Not to Fill,挺难的。

6.DFS、BFS:算是必须掌握的基础了。

7.回溯剪枝:就记得甲级题库里的1103了,不过因为内存限制放的宽,用动态规划暴力做也可以。

8.此外,AVL树的插入删除要会写。

9.根据树的各种遍历方式构建二叉树经常考到,最好熟练掌握。

10.堆的构建、删除、插入要会写,即“自顶向下”和“自底向上”调整堆。

11.最后,关于最小生成树和动态规划,这两个都是顶级的内容了,基本不会考,但是思想并不复杂,多学一点总是好的,学有余力建议了解一下。动态规划甲级题库有好几道,背景都很经典;求最小生成树用的是贪心算法,可以做下PTA上数据结构与算法题目集(中文)7-10,prim和kruskal算法都试试。只是简单学习的话还是很快的,也比较有意思。

作者:zyxc_mysn
来源:CSDN
原文:https://blog.csdn.net/qq_38658814/article/details/82534765
版权声明:本文为博主原创文章,转载请附上博文链接!
二。高分要求
首先有十分钟拿下乙级15分题的本事。
然后要能在半小时内完成乙级20分题1道。
接下来训练自己45分钟完成乙级25分题。
这时你有了2.5小时满乙级的本事!
下面改做甲级英文题。
要有用十分钟读完4题的本事。
20分钟写完20分题并至少过样例。
1小时内写完2道25分题并至少过样例。
1小时写完最难题并至少过样例。
此时你应该有70分左右了,
最后半小时拚命过90吧!
最后补充一句:其实乙级60分就有很多企业要了,乙级90分都有接到BAT级企业电话的!所以不是非要甲级才有机会哈~
三。困难的分析与办法
遇到不会的题或者交N次都过不了某个测试点,先自己尝试着解决,很长时间没有想法(比如一个小时)后,再去网上搜题解。并且不要直接看代码,看下人家的思路。自己再来做,再做不来就去看代码,也不要直接把代码copy下来改了就交,最好看懂代码自己写。我个人觉得这样才能把别人的东西变成自己的。(MOOC数据结构的题有问题的话,善用讨论区,姥姥都会很耐心地提供帮助。

你可能感兴趣的:(算法)