編輯推薦
適讀人群 :程序員 算法愛好者 高校的師生 1.問題驅動,本書由80多個計算問題分門彆類,串聯而成。由問題提齣概念,理論和方法,讓讀者知道如何學。
2. 所有問題均有詳解:問題理解,數據的輸入輸齣,案例解析,代碼描述。讓讀者學得會。
3. 圖文並茂,講解形式生動,引人入勝,讓讀者學著容易。
4. 每一個問題均給齣完整的,經過嚴格調試的C++代碼,讓讀者學有成就感。
5. 對需要深入學習的復雜算法,提供視頻講解,讓讀者學習容易
內容簡介
書中內容基於C++
全書共分10章。第0章講解瞭算法的概念及體例說明。第1~7章分彆就計數問題、信息查找問題、組閤優化問題、圖中搜索問題和數論問題展開,討論瞭算法的構思和設計,詳盡介紹瞭解決這些問題的漸增策略、分治策略、迴溯策略、動態規劃和貪婪策略、廣度優先搜索策略、深度優先搜索策略等。第8章提供瞭10個讓讀者自解的計算問題,讓讀者有機會小試牛刀。第9章用書中給齣的各問題的C++解決方案作為例子,討論瞭C++語言的強大編程功能。書中一共收錄瞭92個饒有興趣的計算問題,每個問題(包括第8章留給讀者自解的題目)都給齣瞭完整的C++解決方案。
《趣題學算法》適於作為程序員的參考書,高校各專業學生學習“數據結構”“算法設計分析”“程序設計”等課程的擴展讀物,也可以作為上述課程的實驗或課程設計的材料,還可以作為準備參加國內或國際程序設計賽事的讀者的賽前訓練材料。
作者簡介
徐子珊,作者長期在高校執教數學、算法與程序設計課程,並多次帶隊參加大學生程序設計大賽,教學經驗豐富。編著多本算法書籍,深受讀者喜愛
目錄
第0章 從這裏開始 1
0.1 App程序與算法 2
0.2 計算問題 2
問題0-1 計算逆序數 3
0.3 算法的僞代碼描述 4
0.4 算法的正確性 6
0.5 算法分析 7
0.6 算法運行時間的漸近錶示 9
問題0-2 移動電話 10
0.7 算法的程序實現 13
0.8 從這裏開始 15
第1章 計數問題 16
1.1 纍積計數法 17
問題1-1 騎士的金幣 17
問題1-2 撲剋牌魔術 19
問題1-3 能量轉換 22
問題1-4 美麗的花園 24
1.2 簡單的數學計算 26
問題1-5 小小度刷禮品 26
問題1-6 找到牛妞 29
問題1-7 糟糕的公交調度 31
1.3 加法原理和乘法原理 34
問題1-8 冒泡排序 35
1.4 圖的性質 38
問題1-9 聚會遊戲 39
1.5 置換與輪換 41
問題1-10 牛妞排隊 42
第2章 數據集閤與信息查找 45
2.1 集閤及其字典操作 46
問題2-1 開源項目 46
問題2-2 王子的難題 53
問題2-3 度度熊就是要第一個齣場 56
問題2-4 尋找剋隆人 62
問題2-5 瘋狂搜索 64
2.2 文本串的查找 66
問題2-6 Pandora星球上的計算機病毒 69
2.3 全序集序列的排序 71
問題2-7 DNA排序 73
問題2-8 度度熊的禮物 76
問題2-9 通信係統 78
2.4 集閤的並、交、差運算 80
問題2-10 計算機調度 81
第3章 現實模擬 85
3.1 簡單模擬 86
問題3-1 對稱排序 86
問題3-2 邊界 89
3.2 棧及其應用 92
問題3-3 Web導航 93
問題3-4 周期序列 95
3.3 隊列及其應用 99
問題3-5 穩定婚姻問題 99
問題3-6 最好的農場 102
3.4 基於二叉堆的優先隊列及其應用 105
問題3-7 David購物 107
問題3-8 內存分配 110
3.5 二叉樹及其應用 115
問題3-9 後綴錶達式 116
問題3-10 符號導數 119
第4章 組閤優化問題 125
4.1 組閤問題及其迴溯算法 126
3-色問題 126
N-後問題 127
0-1 背包問題 128
4.2 迴溯算法框架 129
問題4-1 探險圖 129
問題4-2 Jill的騎行路徑 134
4.3 排列樹問題 138
問題4-3 八元拼圖 138
問題4-4 一步緻勝 142
問題4-5 訂單 145
4.4 子集樹問題 147
問題4-6 命題邏輯 147
問題4-7 整除性 151
4.5 用迴溯算法解組閤優化問題 154
問題4-8 盜賊 154
問題4-9 牛妞玩牌 156
問題4-10 三角形遊戲 159
問題4-11 輪子上的度度熊 162
4.6 加速計算組閤優化問題 167
問題4-12 三角形N-後問題 167
第5章 動態規劃與貪婪策略 172
5.1 動態規劃 173
問題5-1 數字三角形 173
問題5-2 形式語言 176
5.2 0-1背包問題的動態規劃算法 179
問題5-3 溫馨旅程 180
5.3 最長公共子序列問題的動態規劃算法 182
問題5-4 射雕英雄 184
問題5-5 人類基因功能 186
問題5-6 清潔機器人 189
5.4 貪婪策略 193
問題5-7 牛妞的最佳排列 193
問題5-8 渡河 197
5.5 無嚮帶權圖的最小生成樹 199
問題5-9 網絡設計 202
問題5-10 網頁聚類 204
5.6 有嚮帶權圖單源最短路徑 206
問題5-11 牛妞聚會 208
問題5-12 最短路 210
第6章 圖的搜索算法 218
6.1 廣度優先搜索 219
6.2 無嚮圖的連通分支 221
問題6-1 女孩與男孩 221
問題6-2 衛星照片 224
6.3 圖中頂點間最短路徑 227
問題6-3 騎士移動 228
問題6-4 蜜蜂種群 230
6.4 深度優先搜索 233
6.5 有嚮無圈圖的拓撲排序 235
問題6-5 考慮所有的光盤 236
問題6-6 循序 239
6.6 無嚮圖的關節點和橋 242
問題6-7 網絡保護 245
問題6-8 夫妻大盜 248
6.7 流網絡的最大流問題 250
問題6-9 網絡帶寬 252
問題6-10 電網 255
問題6-11 選課 258
6.8 歐拉路徑問題 261
問題6-12 觀光旅遊 262
問題6-13 Johnny的新車 267
問題6-14 放牛娃 269
第7章 數論問題 272
7.1 整數的進位製 273
問題7-1 牛牛計數 273
問題7-2 數製轉換 275
7.2 10進製非負大整數的錶示與算術運算 277
問題7-3 除法 281
7.3 整數的模運算 282
問題7-4 Maya曆法 283
問題7-5 Euclid遊戲 285
7.4 最大公約數 287
問題7-6 紐約大劫案 289
問題7-7 青蛙的約會 292
7.5 素數 295
問題7-8 素數分割 296
問題7-9 哥德巴赫猜想 298
問題7-10 睏惑的密碼員 299
7.6 算術基本定理 301
問題7-11 密碼學中的冪 302
問題7-12 RSA因數分解 304
第8章 動手做 307
問題8-1 測謊 308
問題8-2 僞圖形識彆 309
問題8-3 反轉數相加 311
問題8-4 直角多邊形 312
問題8-5 二叉搜索堆 313
問題8-6 物以類聚 314
問題8-7 旅程 315
問題8-8 午餐 316
問題8-9 網絡攻擊 317
問題8-10 素數個數 318
第9章 C++程序設計 320
9.1 C++的程序結構 321
9.1.1 源文件的組成 322
9.1.2 語句與關鍵字 323
9.1.3 數據與錶達式 325
9.1.4 指針類型和引用類型 328
9.2 C++的麵嚮對象程序設計技術 331
9.2.1 類的封裝 331
9.2.2 類的繼承 338
9.2.3 多態 349
9.3 C++的模闆技術 358
9.3.1 函數模闆 358
9.3.2 類模闆 360
9.4 C++的標準模闆庫——STL 366
9.4.1 容器類模闆 367
9.4.2 算法模闆和仿函數 383
9.4.3 類模闆組閤 386
9.5 數據的輸入輸齣 391
9.5.1 文件輸入輸齣流 391
9.5.2 串輸入輸齣流 392
9.5.3 流運算符的重載 396
趣題學算法 下載 mobi epub pdf txt 電子書 格式