封面
版权页
内容简介
前言
第1章 计算机问题求解概述
1.1 问题与问题实例
1.2 计算机问题求解周期
1.3 算法与程序
1.4 算法复杂性分析
1.4.1 空间复杂性
1.4.2 时间复杂性
习题1
第2章 程序设计语言与数据结构
2.1 程序设计语言的“盲点”
2.1.1 long不够长
2.1.2 double不够准
2.1.3 递归不够快
2.2 基本数据结构
2.2.2 栈和队列
2.2.3 树和二叉树
2.2.4 优先队列和堆
2.2.5 图
2.2.6 并查集
2.3 标准模板库
2.3.2 标准模板库概述
2.3.3 标准模板库应用
习题2
第3章 枚举算法
3.1 枚举的基本思想
3.2 模糊数字
3.3 真假银币
3.4 m钱n鸡
3.5 数字配对
3.6 绳子切割
3.7 石头距离
习题3
第4章 递归与分治
4.1 递归程序
4.2 分治法的基本原理
4.3 合并排序
4.4 逆序对问题
4.5 快速排序
4.6 最接近点对问题
4.7 指数运算
4.8 二分查找
习题4
第5章 动态规划
NOTE
动态规划是运筹学的一个分支,是求解决策过程最优化的数学方法。20世纪50年代初,理查德·贝尔曼(Richard E. Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,创立了解决多阶段最优化决策的新方法划——动态规划。
2022-09-03 10:00:06
5.1 动态规划的基本思想
NOTE
。在实现的过程中,动态规划算法需要存储各子问题的解,所以它的空间复杂度要大于其他算法,这是一种以空间换时间的策略。
2022-09-03 10:02:02
NOTE
opt[i][j]的值只与opt[i−1][j]和opt[i−1][j−1](如果j−1大于0)有关,而与opt[i−2][]没有关系,这种性质也称之为无后效性
2022-09-03 10:03:09
5.1.1 动态规划的基本要素
NOTE
问题的最优解包含其子问题的最优解
2022-09-03 10:03:39
NOTE
最优子结构性质隐含了问题最优解和子问题最优解之间的一种递推关系。它是动态规划的基础,保障了问题的最优解可以由子问题的最优解构造得到,即得到动态规划算法的递推方程。如果一个问题不具备该性质,则不可能用动态规划方法来求解。
2022-09-03 10:03:57