《算法问题实战策略》pdf格式下载免费电子书下载: https://u253469.ctfile.com/fs/253469-300343588
更多电子书下载: http://hadoopall.com/book
内容简介
第一部分 开始解决问题
第二部分 算法分析
第三部分 算法设计范式
第四部分 一些著名的算法
第五部分 基本数据结构
第六部分 树
第七部分 图
作者简介
具宗万
毕业于韩国延世大学计算机科学系,曾在innotive公司和NHN公司任软件工程师,现在芝加哥高频交易(HFT)公司从事算法交易开发工作。2007年开始参与运营韩国程序设计竞赛参赛者网络社交平台algospot
获奖经历
•2002年、2003年 韩国大学生程序设计竞赛 金奖
•2003年、2004年 世界大学生程序设计竞赛 入围决赛
•2004年、2006年、2008年 Google Code Jam 入围决赛
•2007年 Top Coder Open 亚军,2006年 入围决赛
•2008年、2009年 Java算法竞赛 冠军
目录
第一部分 开始解决问题
第1 章 解决问题与程序设计竞赛 4
1.1 引言 4
1.2 程序设计竞赛 4
1.3 阅读本书的方法 7
1.4 值得参加的程序设计竞赛 8
1.5 对赛前准备工作的一些建议 9
1.6 续读 12
第2 章 解决问题概述 13
2.1 引言 13
2.2 解决问题的过程 13
2.3 解决问题的策略 17
2.4 续读 26
第3 章 编码与调试 27
3.1 引言:不要忽视编码的重要性 27
3.2 编写优秀代码的原则 27
3.3 常见失误 32
3.4 调试与测试 39
3.5 变量的取值范围 42
3.6 理解实数型数据类型 46
3.7 续读 55
第二部分 算法分析
第4 章 分析算法的时间复杂度 60
4.1 引言 60
4.2 线性时间算法 62
4.3 次线性时间算法 65
4.4 指数时间算法 67
4.5 时间复杂度 70
4.6 推测执行时间 76
4.7 计算复杂度类:P、NP、NP-完备 81
4.8 续读 84
第5 章 算法正确性证明 85
5.1 引言 85
5.2 数学归纳法和循环不变式 86
5.3 归谬法 90
5.4 其他技巧 92
5.5 续读 95
第三部分 算法设计范式
第6 章 暴力解决法 99
6.1 引言 99
6.2 递归调用和穷举搜索法 100
6.3 练习题:郊游(习题 ID:PICNIC,难度:低) 106
6.4 解题:郊游 107
6.5 练习题:盖游戏板(习题 ID:BOARDCOVER,难度:低) 109
6.6 解题:盖游戏板 111
6.7 优化问题 113
6.8 练习题:时钟同步(习题 ID:CLOCKSYNC,难度:中) 116
6.9 解题:时钟同步 117
6.10 常见穷举搜索类型 119
第7 章 分治法 120
7.1 引言 120
7.2 练习题:四叉树问题(题目 ID:QUADTREE,难度:低) 130
7.3 解题:四叉树问题 131
7.4 练习题:切割篱笆(习题 ID:FENCE,难度:中) 134
7.5 解题:切割篱笆 135
7.6 练习题:粉丝见面会(题目 ID:FANMEETING,难度:高) 139
7.7 解题:粉丝见面会 141
第8 章 动态规划法 143
8.1 引言 143
8.2 练习题:通配符(习题 ID:WILDCARD,难度:中) 151
8.3 解题:通配符 152
8.4 典型优化问题 156
8.5 练习题:合并LIS(题目 ID:JLIS,难度:低) 163
8.6 解题:合并LIS 164
8.7 练习题:背诵圆周率(题目 ID:PI,难度:低) 166
8.8 解题:背诵圆周率 167
8.9 练习题:Quantization(题目 ID:QUANTIZE,难度:中) 169
8.10 解题:Quantization 170
8.11 所有可能的个数与概率 174
8.12 练习题:非对称铺设(题目 ID:ASYMTILING,难度:低) 180
8.13 解题:非对称铺设 181
8.14 练习题:多联骨牌(题目 ID:POLY,难度:中) 183
8.15 解题:多联骨牌 185
8.16 练习题:逃狱的韩尼拔博士(题目 ID:NUMB3RS,难度:中) 187
8.17 解题:逃狱的韩尼拔博士 189
第9 章 动态规划技巧 194
9.1 计算优化问题的实际答案 194
9.2 练习题:打包行李(题目 ID:PACKING,难度:中) 195
9.3 解题:打包行李 197
9.4 练习题:光学字符识别(题目 ID:OCR,难度:高) 199
9.5 解题:光学字符识别 201
9.6 计算第k个答案 204
9.7 练习题:第k个最大递增子序列(题目 ID:KLIS,难度:高) 209
9.8 解题:第k个最长递增子序列 210
9.9 练习题:龙曲线(题目 ID:DRAGON,难度:中) 214
9.10 解题:龙曲线 216
9.11 对非整数型输入的制表 219
9.12 练习题:韦布巴津(题目 ID:ZIMBABWE,难度:高) 224
9.13 解题:韦布巴津 225
9.14 练习题:恢复实验数据(题目 ID:RESTORE,难度:中) 230
9.15 解题:恢复实验数据 231
9.16 组合游戏 234
9.17 练习题:数字游戏(题目 ID:NUMBERGAME,难度:低) 239
9.18 解题:数字游戏 240
9.19 练习题:方块游戏(题目 ID:BLOCKGAME,难度:中) 242
9.20 解题:方块游戏 243
9.21 迭代动态规划法 245
9.22 练习题:回转寿司(题目 ID:SUSHI,难度:中) 249
9.23 解题:回转寿司 250
9.24 练习题:Genius(题目 ID:GENIUS,难度:中) 253
9.25 解题:Genius 254
9.26 续读 256
第10 章 贪心法 257
10.1 引言 257
10.2 练习题:加热便当(题目 ID:LUNCHBOX,难度:低) 264
10.3 解题:加热便当 265
10.4 练习题:合并字符串(题目 ID:STRJOIN,难度:中) 268
10.5 解题:合并字符串 269
10.6 练习题:米那斯雅诺(题目 ID:MINASTIRITH,难度:高) 273