学习思路
看课程,配套PPT做笔记、csdn做代码笔记、做思维导图总结
第1章 从零开始
1.1 课程介绍
1)课程由来
2)本书的12章节介绍
1.2 机试形式
1)以题目1.1 a+b介绍了机试的五个部分
2)讲解8种评判结果,方便日后对于不同的返回结果进行更正
1.3 工具推荐
1)为什么选择c/c++
2)Code::blocks以及Clion的下载使用教程
3)介绍一些在线评测系统:牛客网,北大oj,杭电oj
1.4输入格式
以题目a+b 的四种变形考察四种格式,总结如下:
1)单组输入:直接输入输出即可
2)多组输入,未知组数:利用while循环输出多组数据
3)多组输入,指定组数:用整数n在while循环中递减,来实现指定组数输入
4)多组输入,指定跳出:利用while循环输出多组数据,用if,break语句实现指定跳出
第二章 暴力求解
2.1枚举策略1
1)就是列举所有可能,对每个可能的解进行逐一判断
2)什么情况下可以用枚举?
1s=1000ms 等价于 107运算数据量
分析数据量,8种时间复杂度对应处理的数据量,以及常见算法的时间复杂度
3)枚举应用
3)例题2.1 abc 先设计算法3个for循环,分析复杂度,与题目数据量进行对比,得出结果可以使用
注意题干中abc =100a +10b +c,所以abc + bcc =100a +110b + 12c
例题2.2 反序数 同理分析数据量,写出代码
例题2.3 对称平方数 分析数据量,反序数的变形,直接写
4)习题2.1、2.2、2.3 略3道
2.2模拟
2.2.1图形排版2
1)例题2.4输出梯形。观察规律,构造梯形
2)例题2.5叠筐 利用数组存放字符,逐一输出
3)习题2.4、2.5 略2道
2.2.2日期问题3
1)例题2.6今年的第几天? 例题2.7打印日期
2)例题2.8,习题2.6、2.7、2.8 略4道
2.2.3其他模拟4
1)例题2.10 手机键盘
2)例题2.9、例题2.10,习题2.9、2.10、2.11 略5道
总结:第二章讲了8个题,剩余14道练习题。
第三章 排序与查找
3.1.1 排序1
1)内定义数据类型 sort函数 例题3.1排序
2) 自定义数据类型
例题3.2成绩排序(法1:设计比较函数、法2:定义大小关系)、
3)习题3.2整数奇偶排序
4)例题3.3、习题3.1、习题3.3、习题3.4 略四道
3.1.2 拓展排序2
1)线性排序,计数排序讲解
拓展题目1 sort (HUJ ):给你n个整数,请按从大到小的顺序输出其中前m大的数
2)逆序数对,归并排序讲解,归并排序、求逆序数算法代码讲解
拓展题目2 Brainman(POJ 1804): 给你n个整数组成的序列,请求出序列的逆序数
3) 第k大数, 快速排序讲解, 快速排序代码讲解,改进求第k大数
拓展题目3 Kth Largest Element in an Array (LeetCode 215)
3.2 查找3
即搜索空间中目标值
1)线性查找 o(n)讲解
例题3.5 查找,法一
2)二分查找 讲解
例题3.5 查找 自定义的二分查找以及内定义的二分查找,法二三
3)散列查找 讲解
例题3.5 查找 自定义的散列查找以及内定义的散列查找,法四五
4)例题3.4,习题3.5,习题3.6,习题3.7 略四道
总结:第二章讲了6个题,剩余8道练习题。其中,第一道题讲了2种方法,最后一道讲了5种方法。
第四章 字符串
4.1字符串介绍
1)字符串的四种操作
2)string的四个方面应用及其代码讲解
1构造 2操作 3运算 4函数
4.2字符串操作
遍历,加密,统计,匹配
1)遍历 例题4.1特殊乘法
2)加密 例题4.2简单密码
3)统计 例题4.3统计字符
4.3字符串匹配
第五章 数据结构一
5.1向量
1)数组介绍
2)向量介绍
时间复杂度越长越好,空间复杂度越短越好
3)动态管理原理,以及代码示例,及空间复杂度分析
4)vector的两个方面应用,及其代码讲解
1构造,2操作
5)例题5.1略一道
5.2队列
1)队列介绍
2)queue的四个方面应用,及其代码讲解
入队,出队,访问队首,出队
3)例题5.3 猫狗收容所
4)例题5.2,略一道
5.3栈
1)栈介绍
2)stack的四个方面应用,及其代码讲解
入栈,出栈,判空,访问栈顶
3)栈的三种应用
1逆序输出 例题5.4Zero-complexity Transposion
2括号匹配 例题5.5括号匹配问题
3表达式求值 例题5.6简单计算器
4)习题5.1,习题5.2略两道
总结:第五章讲了四个题,剩余四个题。
第六章 数学问题
6.1进制转换
1)数学问题介绍
2)例题6.1二进制数(代码不同)
3)习题6.1 八进制
4)习题6.3 进制转换
5)例题6.4 进制转换2
6.2最大公约数与最小公倍数
1)约数的概念
2)GCD讲解及其应用 例题6.5最大公约数
3)最小公倍数讲解 例题6.6最小公倍数
6.3质数
1)质数讲解 例题6.7素数判定
2)质数进阶 例题6.8素数
6.4分解质因数
1)质因数讲解
2)例题6.9质因数的个数
3)习题6.7约数的个数
6.5快速幂
1)快速幂模板
2)例题6.10人见人爱A*B(模板的变形)
6.6矩阵与矩阵快速幂
1)矩阵介绍,定义代码
2)矩阵加法,矩阵乘法代码,例题6.11计算两个矩阵的乘积
3)矩阵转置,矩阵求幂代码,例题6.12矩阵幂
6.7高精度整数
1)高精度整数介绍
2)例题6.13 a+b(三种解法C++/Java/Python)
3)例题6.14 N的阶乘
第七章 贪心策略
7.1简单贪心
1)贪心策略的定义以及组成
2)例题7.2FatMouse'sTrade
例题7.3Senior'Gun
3)补充:箱子打包等三个问题
7.2区间贪心
1)例题7.4今年暑假不AC
2)补充:Radar Installtion
第八章 递归与分治
8.1递归策略
1)递归定义,递归组成两部分
2)例题8.1n的阶乘
3)基础汉诺塔问题(过程)+例题8.2汉诺塔III(过程理解)
8.2分治法
1)分治法定义,步骤,与贪心对比
2)例题8.3Fibonacci(分治法,递推法,矩阵快速幂,公式法)
3) 例题8.4二叉树
第十章 数据结构二
10.1二叉树
1)非线性数据结构介绍
2)二叉树定义、代码定义
3)三种遍历讲解
4)四种情况唯一确定二叉树
例题10.2 二叉树遍历
10.2二叉排序树
1)二叉排序树定义
2)例题10.4二叉排序树
10.3优先队列
1)优先队列介绍
2)二叉堆的实现细节
3)STL-priority-queue各种操作代码讲解
4)应用1:顺序问题,例题10.5复数集合
应用2:哈夫曼树,例题10.6哈夫曼树
10.4散列表
1)散列表讲解及其代码讲解
2)例题10.7查询学生信息
第十一章 图论
11.1概论
1)图论介绍
2)图定义,无向图,有向图,带权图,度
3)存储方式
邻接矩阵及代码,邻接表及代码
11.2并查集
1)并查集定义
2)操作:1查询代码讲解,2合并代码讲解,3路径压缩代码讲解,4树高低代码讲解
3)例题11.2连通图(三个概念讲解+代码)
11.3最小生成树
1)最小生成树定义
2)Kruskal算法
例题11.4还是畅通工程
11.4最短路径
11.5拓扑排序
11.6关键路径