Skip to content

TankNee/Pat_Solutions

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值就行,用 < 就是升序,用 > 就是降序。还用一种自定义排序的方法就是在定义结构体的时候重载运算符:

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

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

字符串处理

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

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

数据范围

Type Size 数值范围 科学记数法
无值型void 0 byte 无值域 0
布尔型bool 1 byte true false 1
有符号短整型short [int] /signed short [int] 2 byte -32768~32767 10^5
无符号短整型unsigned short [int] 2 byte 0~65535 10^5
有符号整型int /signed [int] 4 byte -2147483648~2147483647 10^10
无符号整型unsigned [int] 4 byte 0~4294967295 10^10
有符号长整型long [int]/signed long [int] 4 byte -2147483648~2147483647 10^10
无符号长整型unsigned long [int] 4 byte 0~4294967295 10^10
long long 8 byte 0~18446744073709552000 10^20
有符号字符型char/signed char 1 byte -128~127 10^3
无符号字符型unsigned char 1 byte 0~255 10^3
宽字符型wchar_t (unsigned short.) 2 byte 0~65535 10^5
单精度浮点型float 4 byte -3.4E-38~3.4E+38 10^38
双精度浮点型double 8 byte 1.7E-308~1.7E+308 10^308

Reference:

Releases

No releases published

Packages

No packages published

Languages