《算法競賽入門經典(第2版)》linux
基本信息c++
做者: 劉汝佳 算法
叢書名: 算法藝術與信息學競賽編程
出版社:清華大學出版社windows
ISBN:9787302356288數組
上架時間:2014-6-5bash
出版日期:2014 年6月網絡
開本:16開數據結構
頁碼:464框架
版次:2-1
所屬分類:計算機 > 計算機科學理論與基礎知識 > 計算理論 > 算法
更多關於》》》《算法競賽入門經典(第2版)》
內容簡介
書籍
計算機書籍
《算法競賽入門經典(第2版)》是一本算法競賽的入門與提升教材,把c/c++語言、算法和解題有機地結合在一塊兒,淡化理論,注重學習方法和實踐技巧。全書內容分爲12 章,包括程序設計入門、循環結構程序設計、數組和字符串、函數和遞歸、c++與stl入門、數據結構基礎、暴力求解法、高效算法設計、動態規劃初步、數學概念與方法、圖論模型與算法、高級專題等內容,覆蓋了算法競賽入門和提升所需的主要知識點,並含有大量例題和習題。書中的代碼規範、簡潔、易懂,不只能幫助讀者理解算法原理,還能教會讀者不少實用的編程技巧;書中包含的各類開發、測試和調試技巧也是傳統的語言、算法類書籍中難以見到的。
《算法競賽入門經典(第2版)》可做爲全國青少年信息學奧林匹克聯賽(noip)複賽教材、全國青少年信息學奧林匹克競賽(noi)和acm國際大學生程序設計競賽(acm/icpc)的訓練資料,也可做爲it工程師與科研人員的參考用書。
目錄
《算法競賽入門經典(第2版)》
第1部分語言篇
第1章程序設計入門 1
1.1 算術表達式 1
1.2 變量及其輸入 3
1.3 順序結構程序設計 6
1.4 分支結構程序設計 9
1.5 註解與習題 13
1.5.1 c語言、c9九、c11及其餘 13
1.5.2 數據類型與輸入格式 14
1.5.3 習題 15
1.5.4 小結 16
第2章循環結構程序設計 18
2.1 for循環 18
2.2 while循環和do-while循環 22
2.3 循環的代價 25
2.4 算法競賽中的輸入輸出框架 27
2.5 註解與習題 34
2.5.1 習題 34
2.5.2 小結 36
第3章數組和字符串 37
3.1 數組 37
3.2 字符數組 41
3.3 競賽題目選講 45
3.4 註解與習題 53
3.4.1 進位制與整數表示 54
3.4.2 思考題 55
3.4.3 黑盒測試和在線評測系統 55
3.4.4 例題一覽與習題 56
3.4.5 小結 59
第4章函數和遞歸 61
4.1 自定義函數和結構體 61
4.2 函數調用與參數傳遞 65
4.2.1 形參與實參 65
4.2.2 調用棧 66
4.2.3 用指針做參數 69
4.2.4 初學者易犯的錯誤 71
4.2.5 數組做爲參數和返回值 71
4.2.6 把函數做爲函數的參數 73
4.3 遞歸 74
4.3.1 遞歸定義 74
4.3.2 遞歸函數 75
4.3.3 c語言對遞歸的支持 75
4.3.4 段錯誤與棧溢出 77
4.4 競賽題目選講 79
4.5 註解與習題 92
4.5.1 頭文件、反作用及其餘 93
4.5.2 例題一覽和習題 95
4.5.3 小結 99
第5章 c++與stl入門 100
5.1 從c到c++ 100
5.1.1 c++版框架 101
5.1.2 引用 102
5.1.3 字符串 103
5.1.4 再談結構體 105
5.1.5 模板 106
5.2 stl初步 108
5.2.1 排序與檢索 108
5.2.2 不定長數組:vector 109
5.2.3 集合:set 112
5.2.4 映射:map 113
5.2.5 棧、隊列與優先隊列 115
5.2.6 測試stl 120
5.3 應用:大整數類 123
5.3.1 大整數類biginteger 124
5.3.2 四則運算 125
5.3.3 比較運算符 126
5.4 競賽題目舉例 127
5.5 習題 134
第2部分基礎篇
第6章數據結構基礎 139
6.1 再談棧和隊列 139
6.2 鏈表 143
6.3 樹和二叉樹 148
6.3.1 二叉樹的編號 148
6.3.2 二叉樹的層次遍歷 150
6.3.3 二叉樹的遞歸遍歷 155
6.3.4 非二叉樹 160
6.4 圖 162
6.4.1 用dfs求連通塊 162
6.4.2 用bfs求最短路 164
6.4.3 拓撲排序 167
6.4.4 歐拉回路 168
6.5 競賽題目選講 170
6.6 訓練參考 175
第7章暴力求解法 182
7.1 簡單枚舉 182
7.2 枚舉排列 184
7.2.1 生成1~n的排列 184
7.2.2 生成可重集的排列 185
7.2.3 解答樹 186
7.2.4 下一個排列 187
7.3 子集生成 188
7.3.1 增量構造法 188
7.3.2 位向量法 188
7.3.3 二進制法 189
7.4 回溯法 191
7.4.1 八皇后問題 191
7.4.2 其餘應用舉例 194
7.5 路徑尋找問題 198
7.6 迭代加深搜索 206
7.7 競賽題目選講 209
7.8 訓練參考 213
第3部分競賽篇
第8章高效算法設計 220
8.1 算法分析初步 220
8.1.1 漸進時間複雜度 220
8.1.2 上界分析 222
8.1.3 分治法 223
8.1.4 正確對待算法分析結果 224
8.2 再談排序與檢索 225
8.2.1 歸併排序 225
8.2.2 快速排序 227
8.2.3 二分查找 227
8.3 遞歸與分治 229
8.4 貪心法 231
8.4.1 揹包相關問題 231
8.4.2 區間相關問題 232
8.4.3 huffman編碼 234
8.5 算法設計與優化策略 235
8.6 競賽題目選講 244
8.7 訓練參考 252
第9章動態規劃初步 259
9.1 數字三角形 259
9.1.1 問題描述與狀態定義 259
9.1.2 記憶化搜索與遞推 260
9.2 dag上的動態規劃 262
9.2.1 dag模型 262
9.2.2 最長路及其字典序 262
9.2.3 固定終點的最長路和最短路 264
9.2.4 小結與應用舉例 267
9.3 多階段決策問題 270
9.3.1 多段圖的最短路 270
9.3.2 0-1揹包問題 271
9.4 更多經典模型 274
9.4.1 線性結構上的動態規劃 274
9.4.2 樹上的動態規劃 280
9.4.3 複雜狀態的動態規劃 284
9.5 競賽題目選講 290
9.6 訓練參考 303
第10章數學概念與方法 310
10.1 數論初步 310
10.1.1 歐幾里德算法和惟一分解定理 310
10.1.2 eratosthenes篩法 312
10.1.3 擴展歐幾里德算法 313
10.1.4 同餘與模算術 314
10.1.5 應用舉例 316
10.2 計數與機率基礎 318
10.2.1 楊輝三角與二項式定理 319
10.2.2 數論中的計數問題 321
10.2.3 編碼與解碼 323
10.2.4 離散機率初步 324
10.3 其餘數學專題 327
10.3.1 遞推 327
10.3.2 數學指望 332
10.3.3 連續機率 334
10.4 競賽題目選講 336
10.5 訓練參考 341
第11章圖論模型與算法 352
11.1 再談樹 352
11.1.1 無根樹轉有根樹 352
11.1.2 表達式樹 353
11.2 最小生成樹 355
11.2.1 kruskal算法 356
11.2.2 競賽題目選解 358
11.3 最短路問題 359
11.3.1 dijkstra算法 359
11.3.2 bellman-ford算法 363
11.3.3 floyd算法 364
11.3.4 競賽題目選講 365
11.4 網絡流初步 366
11.4.1 最大流問題 366
11.4.2 增廣路算法 367
11.4.3 最小割最大流定理 369
11.4.4 最小費用最大流問題 370
11.4.5 應用舉例 372
11.5 競賽題目選講 375
11.6 訓練參考 379
11.7 總結與展望 384
第12章高級專題 386
12.1 知識點選講 386
12.1.1 自動機 386
12.1.2 樹的經典問題和方法 392
12.1.3 可持久化數據結構 397
12.1.4 多邊形的布爾運算 399
12.2 難題選解 404
12.2.1 數據結構 404
12.2.2 網絡流 409
12.2.3 數學 411
12.2.4 幾何 415
12.2.5 非完美算法 419
12.2.6 雜題選講 423
12.3 小結與習題 446
附錄a 開發環境與方法 455
a.1 命令行 455
a.1.1 文件系統 455
a.1.2 進程 456
a.1.3 程序的執行 456
a.1.4 重定向和管道 457
a.1.5 常見命令 457
a.2 操做系統腳本編程入門 458
a.2.1 windows下的批處理 458
a.2.2 linux下的bash腳本 459
a.2.3 再談隨機數 460
a.3 編譯器和調試器 460
a.3.1 gcc的安裝和測試 460
a.3.2 常見編譯選項 461
a.3.3 gdb簡介 462
a.3.4 gdb的高級功能 463
a.4 淺談ide 464
主要參考書目 465