编程的乐趣用Python解算法谜题

编程的乐趣用Python解算法谜题
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: (Srini Devadas) , , ,
2019-06
版次: 1
ISBN: 9787115509437
定价: 59.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 223页
正文语种: 简体中文
丛书: Python
  • 这是一本介绍通过解决复杂谜题来学习编程的书,书中的代码用Python语言编写。与以往的编程书不同,本书将对代码功能的理解与编程语言语法和语义的理解分离开来,从解每个谜题开始,先给出解谜题的算法,随后用Python语法和语义实现对应的算法,并适当做出解释。本书包含了21个谜题,其中很多谜题都广为流传,如多皇后、汉诺塔、在几秒钟内解决数独问题、验证六度分隔猜想等,每个谜题后面都配有不同难度的编程习题,帮读者加深对相关算法的理解。

    本书在算法谜题的趣味性和计算机编程的实用性之间搭建了一座桥梁,内容饶有趣味,讲述易于理解,适合已掌握初级编程概念并对算法感兴趣的学习者阅读和参考。 作者简介

    斯里尼·德瓦达斯(Srini Devadas) 麻省理工学院(MIT)计算机科学和人工智能实验室(CSAIL)电子工程和计算机科学教授,自1988年起在麻省理工学院任教。他目前的研究兴趣主要集中在计算机体系结构、计算机安全和应用密码学领域。他因其研究成就获得了2014年IEEE计算机学会技术成就奖、2015年ACM/IEEE理查德·牛顿技术影响力奖和2017年IEEE华莱士·麦克道尔奖。他在MIT教授编程基础、算法导论和算法设计与分析等课程。

    译者简介

    戴 旭 高级项目管理师,从事金融信息化和电子政务工作多年,现为杭州城市大脑研发团队成员,译有《Python快速入门》《Android平板电脑开发秘籍》《编写高性能的.NET代码》等。

    李亚舟 现任职于知乎,负责数据库平台,关注存储、分布式系统、容器等技术,译有《Haskell趣学指南》。

    许亚运 曾任职于高德、饿了么,有多年互联网行业后端开发经验,爱好Python,喜欢探索新技术。 谜题1 保持一致 1

    1.1 寻找想法相同的连续人员 2

    1.2 字符串、列表和元组 3

    1.3 从算法到代码 4

    1.4 代码优化 7

    1.5 列表创建与修改 7

    1.6 作用域 8

    1.7 算法优化 9

    1.8 单遍算法 9

    1.9 应用 10

    1.10 习题 11

    谜题2 参加派对的最佳时间 13

    2.1 反复检查时间 14

    2.2 聪明地检查时间 16

    2.3 有序的表示 20

    2.4 习题 20

    谜题3 拥有(需要一点校准的)读心术 22

    3.1 编程完成助手的工作 24

    3.2 编程完成魔术师的任务 28

    3.3 独自掌握技巧 29

    3.4 信息编码 31

    3.5 4张牌的魔术戏法 31

    3.6 习题 32

    谜题4 让皇后保持分离 34

    4.1 系统地搜索 36

    4.2 用二维列表(数组)表示棋盘 38

    4.3 用一维列表(数组)表示棋盘 41

    4.4 迭代枚举 45

    4.5 习题 46

    谜题5 请打碎水晶 47

    5.1 两颗球的高效搜索 48

    5.2 d颗球的高效搜索 49

    5.3 对两颗球减少抛球次数 53

    5.4 习题 54

    谜题6 寻找假币 55

    6.1 分治 55

    6.2 递归分治 57

    6.3 三进制表示 60

    6.4 称量谜题一个流行的变体 61

    6.5 习题 61

    谜题7 跳到平方根 62

    7.1 迭代查找 62

    7.2 折半查找 65

    7.3 二分搜索 67

    7.4 三分搜索 69

    7.5 习题 69

    谜题8 猜猜谁不来吃晚餐 71

    8.1 第 一次尝试 72

    8.2 始终寻找最大选择 73

    8.3 生成所有组合 74

    8.4 移除不友好的组合 76

    8.5 选择最大组合 76

    8.6 优化内存使用 77

    8.7 应用 78

    8.8 习题 79

    谜题9 美国达人秀 81

    9.1 每次生成并测试一个组合 83

    9.2 确定缺少一门绝活的组合 84

    9.3 应用 85

    9.4 习题 86

    谜题10 多皇后 88

    10.1 递归求取最大公约数 88

    10.2 递归获取斐波那契数列 89

    10.3 递归求解N皇后问题 91

    10.4 递归的应用 94

    10.5 习题 96

    谜题11 请满铺庭院 98

    11.1 归并排序 99

    11.2 归并排序的执行与分析 101

    11.3 基线条件即2 × 2庭院 102

    11.4 递归步骤 103

    11.5 列表推导式的基础知识 107

    11.6 美观打印 107

    11.7 另一个满铺谜题 109

    11.8 习题 109

    谜题12 汉诺塔 111

    12.1 汉诺塔的递归解决方案 112

    12.2 相邻汉诺塔的递归解决方案 114

    12.3 与格雷码的关系 117

    12.4 习题 118

    谜题13 没条理的工匠 121

    13.1 分治时的围绕基准点分拣 122

    13.2 与排序算法的关系 123

    13.3 原地划分 126

    13.4 排序也疯狂 129

    13.5 习题 129

    谜题14 再也不玩数独了 131

    14.1 递归式数独求解 132

    14.2 递归搜索过程中的推理 136

    14.3 数独谜题的难度 140

    14.4 习题 141

    谜题15 统计零钱的组合方式 143

    15.1 钞票的递归选取 143

    15.2 消除重复 145

    15.3 用最少的钞票支付 147

    15.4 习题 148

    谜题16 贪心是好事 150

    16.1 贪心算法 151

    16.2 最短历时规则 151

    16.3 最早开始时间规则 151

    16.4 最少冲突规则 152

    16.5 最早结束时间规则 152

    16.6 贪心算法何时有效 157

    16.7 习题 158

    谜题17 字母也疯狂 160

    17.1 每次找到一组变位词 160

    17.2 通过排序对变位词进行分组 162

    17.3 通过散列操作对变位词进行分组 164

    17.4 字典 165

    17.5 用字典对变位词进行分组 167

    17.6 散列表 169

    17.7 习题 171

    谜题18 充分利用记忆 173

    18.1 递归解决方案 173

    18.2 回溯硬币的选择过程 175

    18.3 memoization技术 178

    18.4 避免使用异常 179

    18.5 动态规划 180

    18.6 习题 180

    谜题19 要记得周末 184

    19.1 找到分区 185

    19.2 二分图的判别 187

    19.3 图的表示 189

    19.4 图的着色 192

    19.5 习题 193

    谜题20 六度分隔 195

    20.1 广度优先搜索 197

    20.2 集合 198

    20.3 在广度优先搜索中使用集合 199

    20.4 历史 202

    20.5 习题 203

    谜题21 问题有价 205

    21.1 用字典构造二叉查找树 207

    21.2 字典形式下的二叉查找树操作 209

    21.3 面向对象风格的二叉查找树 212

    21.4 回到谜题:算法 216

    21.5 解决谜题的代码 218

    21.6 多种数据结构的对比 222

    21.7 习题 222
  • 内容简介:
    这是一本介绍通过解决复杂谜题来学习编程的书,书中的代码用Python语言编写。与以往的编程书不同,本书将对代码功能的理解与编程语言语法和语义的理解分离开来,从解每个谜题开始,先给出解谜题的算法,随后用Python语法和语义实现对应的算法,并适当做出解释。本书包含了21个谜题,其中很多谜题都广为流传,如多皇后、汉诺塔、在几秒钟内解决数独问题、验证六度分隔猜想等,每个谜题后面都配有不同难度的编程习题,帮读者加深对相关算法的理解。

    本书在算法谜题的趣味性和计算机编程的实用性之间搭建了一座桥梁,内容饶有趣味,讲述易于理解,适合已掌握初级编程概念并对算法感兴趣的学习者阅读和参考。
  • 作者简介:
    作者简介

    斯里尼·德瓦达斯(Srini Devadas) 麻省理工学院(MIT)计算机科学和人工智能实验室(CSAIL)电子工程和计算机科学教授,自1988年起在麻省理工学院任教。他目前的研究兴趣主要集中在计算机体系结构、计算机安全和应用密码学领域。他因其研究成就获得了2014年IEEE计算机学会技术成就奖、2015年ACM/IEEE理查德·牛顿技术影响力奖和2017年IEEE华莱士·麦克道尔奖。他在MIT教授编程基础、算法导论和算法设计与分析等课程。

    译者简介

    戴 旭 高级项目管理师,从事金融信息化和电子政务工作多年,现为杭州城市大脑研发团队成员,译有《Python快速入门》《Android平板电脑开发秘籍》《编写高性能的.NET代码》等。

    李亚舟 现任职于知乎,负责数据库平台,关注存储、分布式系统、容器等技术,译有《Haskell趣学指南》。

    许亚运 曾任职于高德、饿了么,有多年互联网行业后端开发经验,爱好Python,喜欢探索新技术。
  • 目录:
    谜题1 保持一致 1

    1.1 寻找想法相同的连续人员 2

    1.2 字符串、列表和元组 3

    1.3 从算法到代码 4

    1.4 代码优化 7

    1.5 列表创建与修改 7

    1.6 作用域 8

    1.7 算法优化 9

    1.8 单遍算法 9

    1.9 应用 10

    1.10 习题 11

    谜题2 参加派对的最佳时间 13

    2.1 反复检查时间 14

    2.2 聪明地检查时间 16

    2.3 有序的表示 20

    2.4 习题 20

    谜题3 拥有(需要一点校准的)读心术 22

    3.1 编程完成助手的工作 24

    3.2 编程完成魔术师的任务 28

    3.3 独自掌握技巧 29

    3.4 信息编码 31

    3.5 4张牌的魔术戏法 31

    3.6 习题 32

    谜题4 让皇后保持分离 34

    4.1 系统地搜索 36

    4.2 用二维列表(数组)表示棋盘 38

    4.3 用一维列表(数组)表示棋盘 41

    4.4 迭代枚举 45

    4.5 习题 46

    谜题5 请打碎水晶 47

    5.1 两颗球的高效搜索 48

    5.2 d颗球的高效搜索 49

    5.3 对两颗球减少抛球次数 53

    5.4 习题 54

    谜题6 寻找假币 55

    6.1 分治 55

    6.2 递归分治 57

    6.3 三进制表示 60

    6.4 称量谜题一个流行的变体 61

    6.5 习题 61

    谜题7 跳到平方根 62

    7.1 迭代查找 62

    7.2 折半查找 65

    7.3 二分搜索 67

    7.4 三分搜索 69

    7.5 习题 69

    谜题8 猜猜谁不来吃晚餐 71

    8.1 第 一次尝试 72

    8.2 始终寻找最大选择 73

    8.3 生成所有组合 74

    8.4 移除不友好的组合 76

    8.5 选择最大组合 76

    8.6 优化内存使用 77

    8.7 应用 78

    8.8 习题 79

    谜题9 美国达人秀 81

    9.1 每次生成并测试一个组合 83

    9.2 确定缺少一门绝活的组合 84

    9.3 应用 85

    9.4 习题 86

    谜题10 多皇后 88

    10.1 递归求取最大公约数 88

    10.2 递归获取斐波那契数列 89

    10.3 递归求解N皇后问题 91

    10.4 递归的应用 94

    10.5 习题 96

    谜题11 请满铺庭院 98

    11.1 归并排序 99

    11.2 归并排序的执行与分析 101

    11.3 基线条件即2 × 2庭院 102

    11.4 递归步骤 103

    11.5 列表推导式的基础知识 107

    11.6 美观打印 107

    11.7 另一个满铺谜题 109

    11.8 习题 109

    谜题12 汉诺塔 111

    12.1 汉诺塔的递归解决方案 112

    12.2 相邻汉诺塔的递归解决方案 114

    12.3 与格雷码的关系 117

    12.4 习题 118

    谜题13 没条理的工匠 121

    13.1 分治时的围绕基准点分拣 122

    13.2 与排序算法的关系 123

    13.3 原地划分 126

    13.4 排序也疯狂 129

    13.5 习题 129

    谜题14 再也不玩数独了 131

    14.1 递归式数独求解 132

    14.2 递归搜索过程中的推理 136

    14.3 数独谜题的难度 140

    14.4 习题 141

    谜题15 统计零钱的组合方式 143

    15.1 钞票的递归选取 143

    15.2 消除重复 145

    15.3 用最少的钞票支付 147

    15.4 习题 148

    谜题16 贪心是好事 150

    16.1 贪心算法 151

    16.2 最短历时规则 151

    16.3 最早开始时间规则 151

    16.4 最少冲突规则 152

    16.5 最早结束时间规则 152

    16.6 贪心算法何时有效 157

    16.7 习题 158

    谜题17 字母也疯狂 160

    17.1 每次找到一组变位词 160

    17.2 通过排序对变位词进行分组 162

    17.3 通过散列操作对变位词进行分组 164

    17.4 字典 165

    17.5 用字典对变位词进行分组 167

    17.6 散列表 169

    17.7 习题 171

    谜题18 充分利用记忆 173

    18.1 递归解决方案 173

    18.2 回溯硬币的选择过程 175

    18.3 memoization技术 178

    18.4 避免使用异常 179

    18.5 动态规划 180

    18.6 习题 180

    谜题19 要记得周末 184

    19.1 找到分区 185

    19.2 二分图的判别 187

    19.3 图的表示 189

    19.4 图的着色 192

    19.5 习题 193

    谜题20 六度分隔 195

    20.1 广度优先搜索 197

    20.2 集合 198

    20.3 在广度优先搜索中使用集合 199

    20.4 历史 202

    20.5 习题 203

    谜题21 问题有价 205

    21.1 用字典构造二叉查找树 207

    21.2 字典形式下的二叉查找树操作 209

    21.3 面向对象风格的二叉查找树 212

    21.4 回到谜题:算法 216

    21.5 解决谜题的代码 218

    21.6 多种数据结构的对比 222

    21.7 习题 222
查看详情
您可能感兴趣 / 更多
编程的乐趣用Python解算法谜题
编程侠:4再次开启的门
宋阿伦
编程的乐趣用Python解算法谜题
编程侠:3漏洞升级
宋阿伦
编程的乐趣用Python解算法谜题
编程改变生活——用PySide6/PyQt6创建GUI程序(基础篇·微课视频版)
邢世通
编程的乐趣用Python解算法谜题
编程侠:2英雄的诞生
宋阿伦
编程的乐趣用Python解算法谜题
编程初体验:思维启蒙
张梦晗、吴培 编著 梦堡文化 绘
编程的乐趣用Python解算法谜题
编程王国:给孩子的编程启蒙绘本(全9册)
卢高林
编程的乐趣用Python解算法谜题
编程创新应用:从创客到人工智能
马兰、高凯 编著 梦堡文化 绘
编程的乐趣用Python解算法谜题
编程侠:套装(共5册)
宋阿伦
编程的乐趣用Python解算法谜题
编程王国:给孩子的编程启蒙绘本1——出发!去1111站
卢高林, 王落
编程的乐趣用Python解算法谜题
编程趣味学:Scratch3.0
赵宇、李京 编著 梦堡文化 绘
编程的乐趣用Python解算法谜题
编程侠:5异次元旅行
宋阿伦
编程的乐趣用Python解算法谜题
编程改变生活——用PySide6/PyQt6创建GUI程序(进阶篇·微课视频版)
邢世通
系列丛书 / 更多
编程的乐趣用Python解算法谜题
编程侠:4再次开启的门
宋阿伦
编程的乐趣用Python解算法谜题
编程侠:3漏洞升级
宋阿伦
编程的乐趣用Python解算法谜题
编程改变生活——用PySide6/PyQt6创建GUI程序(基础篇·微课视频版)
邢世通
编程的乐趣用Python解算法谜题
编程侠:2英雄的诞生
宋阿伦
编程的乐趣用Python解算法谜题
编程初体验:思维启蒙
张梦晗、吴培 编著 梦堡文化 绘
编程的乐趣用Python解算法谜题
编程王国:给孩子的编程启蒙绘本(全9册)
卢高林
编程的乐趣用Python解算法谜题
编程创新应用:从创客到人工智能
马兰、高凯 编著 梦堡文化 绘
编程的乐趣用Python解算法谜题
编程侠:套装(共5册)
宋阿伦
编程的乐趣用Python解算法谜题
编程王国:给孩子的编程启蒙绘本1——出发!去1111站
卢高林, 王落
编程的乐趣用Python解算法谜题
编程趣味学:Scratch3.0
赵宇、李京 编著 梦堡文化 绘
编程的乐趣用Python解算法谜题
编程侠:5异次元旅行
宋阿伦
编程的乐趣用Python解算法谜题
编程改变生活——用PySide6/PyQt6创建GUI程序(进阶篇·微课视频版)
邢世通
相关图书 / 更多
编程的乐趣用Python解算法谜题
编程侠:4再次开启的门
宋阿伦
编程的乐趣用Python解算法谜题
编程侠:3漏洞升级
宋阿伦
编程的乐趣用Python解算法谜题
编程改变生活——用PySide6/PyQt6创建GUI程序(基础篇·微课视频版)
邢世通
编程的乐趣用Python解算法谜题
编程侠:2英雄的诞生
宋阿伦
编程的乐趣用Python解算法谜题
编程初体验:思维启蒙
张梦晗、吴培 编著 梦堡文化 绘
编程的乐趣用Python解算法谜题
编程王国:给孩子的编程启蒙绘本(全9册)
卢高林
编程的乐趣用Python解算法谜题
编程创新应用:从创客到人工智能
马兰、高凯 编著 梦堡文化 绘
编程的乐趣用Python解算法谜题
编程侠:套装(共5册)
宋阿伦
编程的乐趣用Python解算法谜题
编程王国:给孩子的编程启蒙绘本1——出发!去1111站
卢高林, 王落
编程的乐趣用Python解算法谜题
编程趣味学:Scratch3.0
赵宇、李京 编著 梦堡文化 绘
编程的乐趣用Python解算法谜题
编程侠:5异次元旅行
宋阿伦
编程的乐趣用Python解算法谜题
编程改变生活——用PySide6/PyQt6创建GUI程序(进阶篇·微课视频版)
邢世通