目录 1
第一篇 程序设计知识 1
第一章 PASCAL语言 1
1-1 一个简单例题 1
1-2 PASCAL的程序结构 4
1-3 PASCAL的控制结构 11
1-4 PASCAL的数据类型、常量、运算符和表达式 18
1-5 PASCAL的子程序 39
第二章 数据结构 46
2-1 表 46
2-2 树 64
2-3 图 73
2-4 查找和排序 83
第三章 基础算法 87
3-1 分治法 87
3-2 贪心法 90
3-3 递推法 93
3-4 枚举法 100
3-5 递归法 108
3-6 模拟法 111
3-7 试探法 119
3-8 由一门试题引起的思考 122
4-1 如何求出马的所有周游路线 125
第四章 跳马 125
第二篇 盲目搜索 125
4-2 算法分析——用回溯法求解所有路径 130
4-3 用回溯法求解所有路径的算法框架 131
4-4 应用框架解题 133
第五章 值班警卫 136
5-1 如何求出改变值班起始时间的最少警卫人数 136
5-2 算法分析——如何用回溯法求解最佳路径 141
5-3 用回溯法求解最佳路径的算法框架 142
5-4 应用框架解题 145
第六章 滚球 151
6-1 用纵深搜索的方法求出小球的一种滚法 151
6-2 算法分析——介绍深度优先搜索 154
6-3 深度优先搜索的算法框架 155
6-4 应用框架解题 158
6-5 滚球问题的另一种解法 162
第七章 开关矩阵 169
7-1 用逐层搜索的方法求出最少的变换步骤 170
7-2 算法分析——介绍广度优先搜索 171
7-3 广度优先搜索的算法框架 172
7-4 应用框架解题 176
7-5 开关矩阵的另一种解法 180
第八章 黑白棋子 188
8-1 从两个方向搜索最佳移动格局 188
8-2 算法分析——介绍双向广度优先搜索 189
8-3 双向广度优先搜索的算法框架 191
8-4 应用框架解题 195
第九章 最佳工作序列 200
9-1 用分枝定界法求最佳工作序列 200
9-2 算法分析——介绍分枝定界法 202
9-3 分枝定界法的算法框架 204
9-4 应用框架解题 206
第三篇 启发性搜索 210
第十章 格子变换 210
10-1 用局部择优的方法搜索格子变换的最佳方案 210
10-2 算法分析——介绍启发式回溯法 212
10-3 启发式回溯法的算法框架 214
10-4 应用框架解题 219
第十一章 求最少乘法次数 223
11-1 用局部择优的方法搜索an的最少乘法次数 223
11-2 算法分析——介绍约束查找法 227
11-3 约束查找法的算法框架 230
11-4 应用框架解题 234
第十二章 魔方 239
12-1 如何使魔方沿着转动步数最少的方向旋转 241
12-2 算法分析——介绍A*算法 242
12-3 A*的算法框架 244
12-4 应用框架解题 249
13-1 通过分阶段搜索方法减缓搜索14码问题中产生的内存溢出 256
第十三章 十四数码 256
13-2 算法分析——介绍分阶段A*算法 258
13-3 分阶段A*的算法框架 260
13-4 应用框架解题 264
第十四章 博奕树 270
14-1 如何使计算机走出最有希望获胜的一步 270
14-2 算法分析——介绍博奕树 273
14-3 博奕树的算法框架 275
14-4 应用框架解题 280
第四篇 解题方法小结 287
第十五章 设计解题方案 287
15-1 程序设计 287
15-2 如何分析试题 288
15-3 怎样设计算法 295
第十六章 程序设计要点 307
16-1 如何建立良好的程序设计风格 307
16-2 谈一点程序优化 310
16-3 一个编码实例 319
第十七章 程序审查 329
17-1 程序审查的一般过程 329
17-2 选择适当的调试手段查错和修改 333
17-3 一个调试实例 338
附录A PASCAL句法 344
附录B TURBO PASCAL 5.0用户界面 350
附录C 试题精选 361