編程的樂趣 用 Python 解算法謎題 (Programming for the Puzzled: Learn to Program While Solving Puzzles)
[美] 斯里尼·德瓦達斯(Srini Devadas)
- 出版商: 人民郵電
- 出版日期: 2019-06-01
- 定價: $354
- 售價: 8.5 折 $301
- 語言: 簡體中文
- ISBN: 7115509433
- ISBN-13: 9787115509437
-
相關分類:
Python
- 此書翻譯自: Programming for the Puzzled: Learn to Program While Solving Puzzles (MIT Press)
立即出貨 (庫存 < 3)
買這商品的人也買了...
-
$580$458 -
$880$695 -
$450$356 -
$500$390 -
$607Effective Java, 3/e (簡體中文版)
-
$490$441 -
$620$484 -
$680$612 -
$811$763 -
$800$632 -
$520$468 -
$281PyTorch 深度學習 (Deep Learning with PyTorch: A practical approach to building neural network models using PyTorch)
-
$433動手學深度學習
-
$650$514 -
$352$331 -
$611$581 -
$1,000$790 -
$720$562 -
$580$452 -
$780$616 -
$250圖解 LeetCode 初級算法 (Python版)
-
$580$458 -
$620$490 -
$720$562 -
$450$355
相關主題
商品描述
這是一本介紹通過解決復雜謎題來學習編程的書,書中的代碼用Python語言編寫。與以往的編程書不同,本書將對代碼功能的理解與編程語言語法和語義的理解分離開來,從解每個謎題開始,先給出解謎題的算法,隨後用Python語法和語義實現對應的算法,並適當做出解釋。本書包含了21個謎題,其中很多謎題都廣為流傳,如多皇後、漢諾塔、在幾秒鐘內解決數獨問題、驗證六度分隔猜想等,每個謎題後面都配有不同難度的編程習題,幫讀者加深對相關算法的理解。
本書在算法謎題的趣味性和電腦編程的實用性之間搭建了一座橋梁,內容饒有趣味,講述易於理解,適合已掌握初級編程概念並對算法感興趣的學習者閱讀和參考。
作者簡介
作者:[美]斯里尼·德瓦達斯(Srini Devadas)譯者:戴旭李亞舟許亞運
作者簡介
斯里尼·德瓦達斯(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