Skip to content

Repository files navigation

PAT Solutions

Implement By C++

Readme 目录

前言

截至2021年02月21日,一共写了PAT 20+25 道题,包括在牛客网写的几道真题,因为牛客有PAT报名的优惠券,而且评分体系也比较友好,用例错了都会有提示,方便纠错。

题型分类

写了这么点题目最大的感受就是到后面题型就开始重复了,大致分为下面这几类:

  1. 图的最短路径
  2. 图的遍历
  3. 树的遍历
  4. 对输入的简单处理,例如字符串转换等
  5. 和时间有关的问题
  6. 跟进制有关的问题
  7. 排队问题

跟图有关的题目大多比较难,不过方法大多是用DFS或者Dijkstra,难点在于理解题目的含义。而后就是跟排队有关的,第一次遇到的时候这么多窗口确实有点不知所措,还有黄线,黄线内排队,以及这种问题的变体,核心思想还是抓住下一个窗口,怎么判断一个用户要进入的那个窗口非常重要!

其他的出现很多,但大多没有那么复杂,但是遇到了一些小技巧还是很需要记忆的!

技巧

数据类型转换

数字类型转换

int double float等等,整形转浮点数可以用x / 1.0来实现,浮点数转整形直接用强制类型转换就OK,不过会损失精度,只保留正数?如果不放心可以用cmath头文件中提供的ceil,floor等方法来实现,如果需要四舍五入,那么可以用round方法。

字符串类型转换

int,double等转为string都可以用C++提供的内置方法:to_string,这个方法有很多的重写,一般来说是够用的,要注意,如果传给它一个char类型的值,那么这个函数会将其变为数字,而不是字符串!

string转为其他类型的值可以用内置的方法:stoi等等,这种命名的方法用很多,慢慢找就能找到。

匿名Lambda函数表达式

常用的地方是自定义sort函数,第三个形参可以传递一个匿名函数,用Lambda的形式:

[/* 引用在它之外声明的变量 */](data_type param1, data_type param2){
// 函数体
}

参数是两个遍历的容器中的数据,只需要返回一个bool值就行,用 < 就是升序,用 > 就是降序。还用一种自定义排序的方法就是在定义结构体的时候重载运算符:

structnode {
int value;
booloperator <(const node& n) const {
// 函数体,要求返回一个bool值
}
}

这样在用sort函数的时候就会自动使用这里重载的运算符!

字符串处理

字符串可以看作包装了原生的 char[] 类型,提供了更多方法,也可以直接像数组那样使用。不过像字符串按照separator分割的方法并没有直接提供,我们可以用原生的strtok来获取。

如果需要将char类型的字符转换为数字,可以用:tmp - '0' ,如果要将一位数字转为char类型的字符那么反过来运算即可,相对方便很多!

数据范围

TypeSize数值范围科学记数法
无值型void0 byte无值域0
布尔型bool1 bytetrue false1
有符号短整型short [int] /signed short [int]2 byte-32768~3276710^5
无符号短整型unsigned short [int]2 byte0~6553510^5
有符号整型int /signed [int]4 byte-2147483648~214748364710^10
无符号整型unsigned [int]4 byte0~429496729510^10
有符号长整型long [int]/signed long [int]4 byte-2147483648~214748364710^10
无符号长整型unsigned long [int]4 byte0~429496729510^10
long long8 byte0~1844674407370955200010^20
有符号字符型char/signed char1 byte-128~12710^3
无符号字符型unsigned char1 byte0~25510^3
宽字符型wchar_t (unsigned short.)2 byte0~6553510^5
单精度浮点型float4 byte-3.4E-38~3.4E+3810^38
双精度浮点型double8 byte1.7E-308~1.7E+30810^308

Reference:

About

pat solutions implement by c++

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages