第1章 数论相关知识及其基本算法 1
1.1 自然数和整数 1
1.2 整除 2
1.3 最大公约数和最小公倍数 2
1.3.1 公约数和最大公约数 2
1.3.2 公倍数和最小公倍数 2
1.3.3 编程求最大公约数和最小公倍数 3
1.3.4 基本算法描述 3
1.4 同余 4
1.5 素数 6
1.5.1 筛法求素数 6
1.5.2 素数的判定 7
1.6 密码学相关内容 9
2.1.3 程序 10
2.1.2 问题分析 10
2.1.1 题目描述 10
2.1 K尾相等数 10
第2章 数论解题样例 10
2.1.4 测试数据及参考答案 11
2.2 3n+1数链问题 11
2.2.1 题目描述 11
2.2.2 问题分析 12
2.2.3 程序 12
2.2.4 测试数据及参考答案 14
2.3 高级机密 14
2.3.1 题目描述 14
2.3.2 问题分析 14
2.3.3 程序 15
2.3.4 测试数据及参考答案 15
2.4 负权数 15
2.4.1 题目描述 15
2.4.2 问题分析 16
2.4.3 程序 17
2.4.4 测试数据及参考答案 19
2.5 质多项式 20
2.5.1 题目描述 20
2.5.2 问题分析 20
2.5.3 程序 21
2.5.4 测试数据及参考答案 24
2.6.3 程序 25
2.6.2 问题分析 25
2.6.1 题目描述 25
2.6 猴子舞 25
2.6.4 测试数据及参考答案 31
2.7 数制转换 32
2.7.1 题目描述 32
2.7.2 问题分析 32
2.7.3 程序 33
2.7.4 测试数据及参考答案 35
2.8.1 题目描述 36
2.8 大众比萨 36
2.8.2 问题分析 38
2.8.3 程序 41
2.8.4 测试数据及参考答案 42
第3章 计算几何相关知识及其基本算法 44
3.1 矢量与线段 45
3.1.1 矢量的定义 45
3.1.2 矢量加减法 45
3.1.3 矢量乘法 46
3.1.4 折线段的拐向判断 46
3.1.5 线段所在直线 47
3.2 面积的计算 47
3.2.1 三角形面积的计算 47
3.2.2 简单多边形面积的计算 48
3.3 三角形与相关圆 48
3.3.1 三角形外接圆 48
3.3.2 三角形内切圆 50
3.4.1 判断点是否在线段上 52
3.4.2 判断线段是否相交 52
3.4 判定线段是否相交 52
3.4.3 判断线段是否和直线相交 53
3.5 判定点是否在多边形内 53
3.5.1 判断点在三角形内 53
3.6 对称、平移、旋转 54
3.6.1 点关于点的对称点 54
3.5.2 判断点在多边形内 54
3.6.2 点关于直线的对称点 55
3.6.3 点关于线段的对称点 55
3.6.4 平移 55
3.6.5 旋转 55
3.7 凸包 56
3.8 三角剖分与Voronoi图 57
4.1.2 问题分析 59
4.1.1 题目描述 59
4.1 最短表面距离 59
第4章 计算几何解题样例 59
4.1.3 程序 62
4.1.4 测试数据及参考答案 67
4.2 反射 67
4.2.1 题目描述 67
4.2.2 问题分析 68
4.2.3 程序 69
4.2.4 测试数据及参考答案 72
4.3 铝块切分 72
4.3.1 题目描述 72
4.3.2 问题分析 73
4.3.3 程序 74
4.3.4 测试数据及参考答案 81
4.4.3 程序 82
4.4.2 问题分析 82
4.4.1 题目描述 82
4.4 点在哪 82
4.4.4 测试数据及参考答案 85
4.5 最小半径圆 86
4.5.1 题目描述 86
4.5.2 问题分析 86
4.5.3 程序 87
4.5.4 测试数据及参考答案 91
4.6 走出限区 91
4.6.1 题目描述 91
4.6.2 问题分析 93
4.6.3 程序 94
4.6.4 测试数据及参考答案 98
4.7 蜂族的旅行 98
4.7.1 题目描述 98
4.7.2 问题分析 99
4.7.3 程序 100
4.7.4 测试数据及参考答案 102
4.8 弹孔问题 103
4.8.1 题目描述 103
4.8.2 问题分析 104
4.8.3 程序 104
4.8.4 测试数据及参考答案 108
4.9 城堡围墙 108
4.9.1 题目描述 108
4.9.2 问题分析 109
4.9.3 程序 109
4.9.4 测试数据及参考答案 111
4.10 多边形游戏 112
4.10.1 题目描述 112
4.10.2 问题分析 113
4.10.3 程序 113
4.11.1 题目描述 118
4.10.4 测试数据及参考答案 118
4.11 相似性判断 118
4.11.2 问题分析 119
4.11.3 程序 119
4.11.4 测试数据及参考答案 124
4.12 三角形 126
4.12.1 题目描述 126
4.12.2 问题分析 127
4.12.3 程序 127
4.12.4 测试数据及参考答案 129
第5章 搜索技术 132
5.1 枚举算法 132
5.2 广度优先搜索算法 132
5.3 深度优先搜索算法 133
5.4 双向广度优先搜索算法 134
5.5 A*算法 136
5.6 回溯算法 138
5.7 搜索中的优化 139
第6章 搜索解题样例(一) 141
6.1 马的走法 141
6.1.1 题目描述 141
6.1.2 问题分析 141
6.1.3 程序清单 142
6.1.4 测试数据及参考答案 143
6.2 大整数 143
6.2.1 题目描述 143
6.2.2 问题分析 144
6.2.3 程序清单 145
6.2.4 测试数据及参考答案 148
6.3 著名医生的药方 148
6.3.1 题目描述 148
6.3.2 问题分析 149
6.3.3 程序清单 150
6.4.1 题目描述 156
6.3.4 测试数据及参考答案 156
6.4 王伯买鱼 156
6.4.2 问题分析 157
6.4.3 程序清单 158
6.4.4 测试数据及参考答案 162
6.5 数学家旅游 164
6.5.1 题目描述 164
6.5.2 问题分析 165
6.5.3 程序清单 166
6.5.4 测试数据及参考答案 170
6.6 单轨砌积木 172
6.6.1 题目描述 172
6.6.2 问题分析 173
6.6.3 程序清单 175
6.6.4 测试数据及参考答案 178
6.7.2 问题分析 179
6.7.1 题目描述 179
6.7 国际象棋停车安全问题 179
6.7.3 程序清单 180
6.7.4 测试数据及参考答案 182
6.8 分球 183
6.8.1 题目描述 183
6.8.2 问题分析 183
6.8.3 程序清单 184
6.8.4 测试数据及参考答案 190
6.9 骑士问题 192
6.9.1 题目描述 192
6.9.2 问题分析 193
6.9.3 程序清单 194
6.9.4 测试数据及参考答案 196
6.10 登山 198
6.10.1 题目描述 198
6.10.3 程序清单 199
6.10.2 问题分析 199
6.10.4 测试数据及参考答案 204
6.11 过河 205
6.11.1 题目描述 205
6.11.2 问题分析 206
6.11.3 程序清单 207
6.11.4 测试数据及参考答案 208
第7章 搜索解题样例(二) 210
7.1 齿轮系统 210
7.1.1 题目描述 210
7.1.2 问题分析 211
7.1.3 程序清单 211
7.1.4 测试数据及参考答案 215
7.2 软件补丁 215
7.2.1 题目描述 215
7.2.3 程序清单 217
7.2.2 问题分析 217
7.2.4 测试数据及参考答案 221
7.3 自动计算机器 222
7.3.1 题目描述 222
7.3.2 问题分析 223
7.3.3 程序清单 224
7.3.4 测试数据及参考答案 228
7.4.1 题目描述 229
7.4 神奇的数列 229
7.4.2 问题分析 230
7.4.3 程序清单 230
7.4.4 测试数据及参考答案 232
7.5 分割方格 232
7.5.1 题目描述 232
7.5.2 问题分析 233
7.5.3 程序清单 235
7.6.1 题目描述 242
7.5.4 测试数据及参考答案 242
7.6 分离单词 242
7.6.2 问题分析 243
7.6.3 程序清单 244
7.6.4 测试数据及参考答案 248
7.7 填字游戏 249
7.7.1 题目描述 249
7.7.2 问题分析 250
7.7.3 程序清单 251
7.7.4 测试数据及参考答案 257
7.8 带宽 259
7.8.1 题目描述 259
7.8.2 问题分析 260
7.8.3 程序清单 261
7.8.4 测试数据及参考答案 266
7.9.2 问题分析 267
7.9.1 题目描述 267
7.9 聪明的耗子 267
7.9.3 程序清单 268
7.9.4 测试数据及参考答案 271
7.10 百慕大三角 273
7.10.1 题目描述 273
7.10.2 问题分析 274
7.10.3 程序清单 276
7.10.4 测试数据及参考答案 283
7.11 会餐问题 283
7.11.1 题目描述 283
7.11.2 问题分析 284
7.11.3 程序清单 284
7.11.4 测试数据及参考答案 288
参考文献 291
作者简介 292