《计算机常用算法与程序设计教程 第2版》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:杨克昌著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2017
  • ISBN:9787115455918
  • 页数:276 页
图书介绍:本书遵循“精选案例,深入浅出,面向设计,注重能力培养”的要求,系统讲述枚举、递推、递归、回溯法、动态规划、贪心算法、分支限界法与模拟等常用算法及其应用。精选各算法设计求解的典型案例,从案例提出到算法设计、从程序实现到复杂度分析,环环相扣,融为一体,力求算法理论与实践应用相结合、算法与程序相统一,突出算法在程序设计中的核心地位与引导作用。

第1章 算法与程序设计概述 1

1.1 算法概念与描述 1

1.1.1 算法概念 1

1.1.2 算法描述 3

1.2 算法复杂性分析 6

1.2.1 时间复杂度 7

1.2.2 空间复杂度 12

1.3 算法设计与分析示例 12

1.3.1 最大公约数 12

1.3.2 同码小数和 13

1.3.3 平方根不等式 15

1.4 算法与程序设计 16

1.4.1 算法与程序 16

1.4.2 结构化程序设计 20

习题1 22

第2章 枚举 24

2.1 枚举概述 24

2.2 求和与统计 26

2.2.1 求代数和 26

2.2.2 倍和数探索 26

2.3 整数搜索 31

2.3.1 探求p-完全数 31

2.3.2 搜索合数世纪 32

2.4 解方程与不等式 33

2.4.1 解佩尔方程 33

2.4.2 解分式不等式 35

2.5 分解与重组 35

2.5.1 质因数分解 36

2.5.2 探索双和3元2组 38

2.6 运算数式构建 39

2.6.1 探索完美综合运算式 39

2.6.2 构建对称数式 42

2.7 数阵与图形 46

2.7.1 探求3阶素数幻方 46

2.7.2 构建和积三角形 49

2.8 枚举设计优化 51

2.8.1 优化枚举结构 51

2.8.2 精简枚举参数 52

习题2 54

第3章 递推 56

3.1 递推概述 56

3.2 超级素数搜索 58

3.3 裴波那契序列与卢卡斯序列 62

3.4 多关系递推 63

3.4.1 双幂序列 63

3.4.2 双关系递推数列 65

3.4.3 威佐夫数对序列 67

3.5 数阵与网格 68

3.5.1 构建杨辉三角 68

3.5.2 方格网交通线路 70

3.6 水手分椰子 71

3.6.1 5个水手分椰子 72

3.6.2 探求n个水手分椰子 75

3.7 整币兑零 76

3.7.1 特定零币兑零 76

3.7.2 一般零币兑零 78

3.8 递推小结 80

习题3 81

第4章 递归 83

4.1 递归概述 83

4.2 购票排队 86

4.3 汉诺塔游戏 87

4.3.1 计算移动次数 88

4.3.2 展示移动过程 89

4.4 双转向旋转方阵 90

4.5 分区交换排序与选择 93

4.5.1 分区交换排序 93

4.5.2 分区交换选择 96

4.6 排列组合实现 97

4.6.1 实现排列A(n,m) 98

4.6.2 实现组合C(n,m) 99

4.7 整数拆分 102

4.7.1 零数取自指定区间 102

4.7.2 零数取自指定整数集 104

4.8 递归小结 105

习题4 108

第5章 回溯法 110

5.1 回溯法概述 110

5.1.1 回溯概念 110

5.1.2 回溯描述 111

5.2 桥本分数式 114

5.2.1 9数字桥本分数式 115

5.2.2 探求10数字分数式 119

5.3 素数和环 120

5.4 直尺与数珠 124

5.4.1 神奇古尺 124

5.4.2 数码串珠 126

5.5 错位排列探索 128

5.5.1 伯努利装错信封问题 128

5.5.2 特殊错位排列 130

5.6 情侣拍照排列 132

5.6.1 逐位回溯 132

5.6.2 成对回溯 134

5.7 回溯法小结 136

习题5 138

第6章 动态规划 139

6.1 动态规划概述 139

6.1.1 动态规划概念 139

6.1.2 动态规划设计规范 141

6.2 0-1背包问题 141

6.3 最小子段和 145

6.3.1 序列最小子段 145

6.3.2 环序列最小子段 147

6.4 最优插入乘号 151

6.5 最长子序列探索 153

6.5.1 最长非降子序列 153

6.5.2 最长公共子序列 156

6.6 凸形的三角形划分 158

6.7 动态规划小结 161

习题6 161

第7章 贪心算法 163

7.1 贪心算法概述 163

7.2 删数字最值问题 164

7.3 可拆背包问题 167

7.4 构建埃及分数式 168

7.4.1 优先选择最小分母 169

7.4.2 扩展分母选择范围 170

7.5 数列压缩问题 172

7.5.1 数列压缩的最大值 172

7.5.2 数列压缩的极差 174

7.6 哈夫曼树与编码 176

7.6.1 构建哈夫曼树 176

7.6.2 实现哈夫曼编码 179

7.7 贪心算法小结 182

习题7 183

第8章 分支限界法 185

8.1 分支限界法概述 185

8.2 搜索迷宫最短通道 187

8.2.1 矩阵迷宫 187

8.2.2 三角迷宫 191

8.3 装载问题 194

8.3.1 回溯设计 194

8.3.2 分支限界设计 196

8.4 0-1背包问题 198

8.5 8数码游戏 201

8.5.1 移动常规设计 201

8.5.2 数组优化设计 206

8.6 分支限界法小结 209

习题8 210

第9章 模拟 211

9.1 模拟概述 211

9.1.1 模拟概念 211

9.1.2 竖式乘除模拟 214

9.2 探求乘数 216

9.2.1 积为“1”构成 216

9.2.2 积为指定数构成 217

9.3 尾数前移问题 218

9.3.1 尾数限一个数字 218

9.3.2 尾数为多位数 220

9.4 阶乘幂与排列组合计算 222

9.5 圆周率高精度计算 223

9.6 模拟发扑克牌 226

9.7 泊松分酒问题 228

9.8 模拟小结 231

习题9 232

第10章 算法综合应用与优化 233

10.1 幂积序列 233

10.1.1 双幂积探索 233

10.1.2 探讨3幂积序列 237

10.2 指定码串积 240

10.2.1 探求0-1串积 240

10.2.2 指定2码串积 243

10.2.3 指定多码串积 245

10.3 皇后问题 247

10.3.1 高斯8后问题 247

10.3.2 探索n皇后问题 249

10.3.3 皇后全控棋盘 252

10.4 马步遍历与哈密顿圈 255

10.4.1 马步遍历探索 255

10.4.2 最长马步路径 258

10.4.3 马步型哈密顿圈 262

10.5 综合应用小结 266

习题10 267

附录A 在Visual C++6.0环境下运行C程序方法简介 268

附录B C语言常用库函数 272

参考文献 276