原标题:【计算机考研】机试知识点整理
0 1
输入输出
scanf函数有返回值的,返回的是成功赋值的变量个数。持续读写文件可以这么写:
或者
可以使用%4d来获取输入中的前4位数字,使用%2d%2d来获后面4个数字。
0 2
排序
这个sort函数其实输入时排序的开始地址和结束地址。由于C++的数组名和指针等价,那么指针操作是以数组保存的变量大小为单位的,这么理解的话,buf + n就是要排序的结束位置在数组的终止地址。
可以自定sort的排序规则,定义一个新的cmp函数,只要记得,当cmp返回true的时候,表示cmp第一个参数排在第二参数前面。
降序排列的写法:
结构体排序方法,可以定义cmp,也可重载
定义cmp:
重载
0 3
数据结构
栈
优先级队列(堆)
字符串(string)
0 4
数学问题
% 运算符
(a * b) % c = (a%c * b%c) % c
(a + b) % c = (a%c + b%c) % c
最大公约数(GCD)
如果a,b全为0,gcd不存在;如果有一个0,那么gcd是非零的那个;如果都不为0,那么有:
gcd(a, b) = gcd(b, a % b);
求a,b的gcd代码:
最小公倍数(LCM)
a, b的最小公倍数为两数乘积除以它们最大公约数。
求素数
基本解法是遍历。
进阶一点的做法是素数筛法。使用下面的init()函数可以求前1000000中的前10000个素数,如果flag[i]==true,说明是素数。
二分求幂
快速的求a的b次幂。
0 5
图论
并查集
并查集代码是通用的,背会就好。
最小生成树(MST)
Kruskal算法:
初始时所有的节属于孤立的集合
按照边的权重递增遍历所有的边,若遍到的边两个顶点仍属于不同的集合,则确定该边为最小生成树上的一条边,并将这两个顶点分数的集合合并。
遍历完所有的边后,原图上所有节点属于同一集合则被选取的边和原图中所有节点构成最小生成树;否则原图不连通,最小生成树不存在。
马上放寒假了
考研的同学们可要把握好时间哦!
话说笨鸟先飞
聪明的鸟先飞了还有笨鸟什么事?
启航君已经准备好了寒假作业打卡
还有集训,网课全都送
就等你来了
END
责任编辑: