《算法笔记》内容包括:C/C++快速入门、入门模拟、算法初步、数学问题、C++标准模板库(STL)、数据结构专题(二章)、搜索专题、图算法专题、动态规划专题、字符串专题、专题扩展。《算法笔记》印有二维码,用来实时更新、补充内容及发布勘误的。本书可作为计算机专业研究生入学考试复试上机、各类算法等级考试(如PAT、CSP等)的辅导书,也可作为“数据结构”科目的考研教材及辅导书内容的补充。《算法笔记》还是学习C语言、数据结构与算法的入门辅导书,非常适合零基础的学习者对经典算法进行学习。
前言
第1章如何使用本书1
1.1本书的基本内容1
1.2如何选择编程语言和编译器1
1.3在线评测系统2
1.4常见的评测结果3
1.5如何高效地做题4
第2章C/C++快速入门5
2.1基本数据类型7
2.1.1变量的定义7
2.1.2变量类型7
2.1.3强制类型转换11
2.1.4符号常量和const常量12
2.1.5运算符14
2.2顺序结构17
2.2.1赋值表达式17
2.2.2使用scanf和printf输入/输出18
2.2.3使用getchar和putchar输入/输出字符23
2.2.4注释24
2.2.5typedef24
2.2.6常用math函数25
2.3选择结构28
2.3.1if语句28
2.3.2if语句的嵌套31
2.3.3switch语句32
2.4循环结构34
2.4.1while语句34
2.4.2dowhile语句35
2.4.3for语句36
2.4.4break和continue语句38
2.5数组39
2.5.1一维数组39
2.5.2冒泡排序41
2.5.3二维数组43
2.5.4memset——对数组中每一个元素赋相同的值46
2.5.5字符数组47
2.5.6string.h头文件50
2.5.7sscanf与sprintf53
2.6函数55
2.6.1函数的定义55
2.6.2再谈main函数58
2.6.3以数组作为函数参数58
2.6.4函数的嵌套调用59
2.6.5函数的递归调用60
2.7指针61
2.7.1什么是指针61
2.7.2指针变量62
2.7.3指针与数组63
2.7.4使用指针变量作为函数参数65
2.7.5引用68
2.8结构体(struct)的使用70
2.8.1结构体的定义70
2.8.2访问结构体内的元素71
2.8.3结构体的初始化72
2.9补充74
2.9.1cin与cout74
2.9.2浮点数的比较75
2.9.3复杂度78
2.10黑盒测试80
2.10.1单点测试80
2.10.2多点测试80
第3章入门篇(1)——入门模拟85
3.1简单模拟85
3.2查找元素87
3.3图形输出89
3.4日期处理91
3.5进制转换93
3.6字符串处理95
第4章入门篇(2)——算法初步99
4.1排序99
4.1.1选择排序99
4.1.2插入排序100
4.1.3排序题与sort函数的应用101
4.2散列106
4.2.1散列的定义与整数散列106
4.2.2字符串hash初步109
4.3递归111
4.3.1分治111
4.3.2递归112
4.4贪心118
4.4.1简单贪心118
4.4.2区间贪心122
4.5二分124
4.5.1二分查找124
4.5.2二分法拓展131
4.5.3快速幂134
4.6twopointers137
4.6.1什么是twopointers137
4.6.2归并排序139
4.6.3快速排序142
4.7其他高效技巧与算法146
4.7.1打表146
4.7.2活用递推147
4.7.3随机选择算法149
第5章入门篇(3)——数学问题152
5.1简单数学152
5.2最大公约数与最小公倍数154
5.2.1最大公约数154
5.2.2最小公倍数156
5.3分数的四则运算156
5.3.1分数的表示和化简157
5.3.2分数的四则运算157
5.3.3分数的输出159
5.4素数159
5.4.1素数的判断160
5.4.2素数表的获取160
5.5质因子分解165
5.6大整数运算170
5.6.1大整数的存储170
5.6.2大整数的四则运算171
5.7扩展欧几里得算法176
5.8组合数181
5.8.1关于n!的一个问题181
5.8.2组合数的计算183
第6章C++标准模板库(STL)介绍191
6.1vector的常见用法详解191
6.2set的常见用法详解197
6.3string的常见用法详解202
6.4map的常用用法详解213
6.5queue的常见用法详解218
6.6priority_queue的常见用法详解221
6.7stack的常见用法详解227
6.8pair的常见用法详解230
6.9algorithm头文件下的常用函数232
6.9.1max()、min()和abs()232
6.9.2swap()233
6.9.3reverse()233
6.9.4next_permutation()234
6.9.5fill()235
6.9.6sort()235
6.9.7lower_bound()和upper_bound()242
第7章提高篇(1)——数据结构专题(1)245
7.1栈的应用245
7.2队列的应用251
7.3链表处理253
7.3.1链表的概念253
7.3.2使用malloc函数或new运算符为链表结点分配内存空间254