一提到ACM競賽,周圍很多同學都覺得高不可攀,感覺是數(shù)學天才的專屬領域,其實我們常常被很多大牛的光環(huán)給誤導了, ACM相對于中學的信息學奧賽,難度已經(jīng)降低了很多,大多數(shù)題目即使一般計算機專業(yè)的同學去做也完全有能力搞定。而算法競賽入門經(jīng)典(第二版)的推出再一次大大降低了ACM算法競賽的門檻。如果你想搞算法競賽(比如你們最熟悉的OI或者ACM/ICPC)?如果你覺得你已經(jīng)掌握了C語言,那么最好就從這本書開始競賽之旅吧!小編在這里和大家分享的這份算法競賽入門經(jīng)典(第二版)為epub格式免費電子版,內(nèi)容完整,附有習題及答案,歡迎有需要的朋友下載查閱!
算法競賽入門經(jīng)典第二版簡介
本書是一本算法競賽的入門與提高教材,把C/C 語言、算法和解題有機地結(jié)合在一起,淡化理論,注重學習方法和實踐技巧。全書內(nèi)容分為12章,包括程序設計入門、循環(huán)結(jié)構(gòu)程序設計、數(shù)組和字符串、函數(shù)和遞歸、C 與STL入門、數(shù)據(jù)結(jié)構(gòu)基礎、暴力求解法、高效算法設計、動態(tài)規(guī)劃初步、數(shù)學概念與方法、圖論模型與算法、高級專題等內(nèi)容,覆蓋了算法競賽入門和提高所需的主要知識點,并含有大量例題和習題。書中的代碼規(guī)范、簡潔、易懂,不僅能幫助讀者理解算法原理,還能教會讀者很多實用的編程技巧;書中包含的各種開發(fā)、測試和調(diào)試技巧也是傳統(tǒng)的語言、算法類書籍中難以見到的。
本書可作為全國青少年信息學奧林匹克聯(lián)賽(NOIP)復賽教材、全國青少年信息學奧林匹克競賽(NOI)和ACM國際大學生程序設計競賽(ACM/ICPC)的訓練資料,也可作為IT工程師與科研人員的參考用書。
算法競賽入門經(jīng)典第二版目錄
第1部分 語言篇
第1章 程序設計入門 1
1.1 算術(shù)表達式 1
1.2 變量及其輸入 3
1.3 順序結(jié)構(gòu)程序設計 6
1.4 分支結(jié)構(gòu)程序設計 9
1.5 小結(jié)與習題 13
1.5.1 數(shù)據(jù)類型實驗 13
1.5.2 scanf輸入格式實驗 13
1.5.3 printf語句輸出實驗 13
1.5.4 測測你的實踐能力 14
1.5.5 小結(jié) 14
1.5.6 上機練習 15
第2章 循環(huán)結(jié)構(gòu)程序設計 16
2.1 for循環(huán) 16
2.2 循環(huán)結(jié)構(gòu)程序設計 19
2.3 文件操作 23
2.4 小結(jié)與習題 27
2.4.1 輸出技巧 28
2.4.2 浮點數(shù)陷阱 28
2.4.3 64位整數(shù) 28
2.4.4 C++中的輸入輸出 29
2.4.5 小結(jié) 30
2.4.6 上機練習 31
第3章 數(shù)組和字符串 33
3.1 數(shù)組 33
3.2 字符數(shù)組 37
3.3 最長回文子串 41
3.4 小結(jié)與習題 45
3.4.1 必要的存儲量 45
3.4.2 用ASCII編碼表示字符 45
3.4.3 補碼表示法 46
3.4.4 重新實現(xiàn)庫函數(shù) 47
3.4.5 字符串處理的常見問題 47
3.4.6 關于輸入輸出 47
3.4.7 I/O的效率 47
3.4.8 小結(jié) 49
3.4.9 上機練習 50
第4章 函數(shù)和遞歸 51
4.1 數(shù)學函數(shù) 51
4.1.1 簡單函數(shù)的編寫 51
4.1.2 使用結(jié)構(gòu)體的函數(shù) 52
4.1.3 應用舉例 53
4.2 地址和指針 56
4.2.1 變量交換 56
4.2.2 調(diào)用棧 57
4.2.3 用指針實現(xiàn)變量交換 59
4.2.4 初學者易犯的錯誤 61
4.3 遞歸 62
4.3.1 遞歸定義 62
4.3.2 遞歸函數(shù) 63
4.3.3 C語言對遞歸的支持 64
4.3.4 段錯誤與棧溢出 66
4.4 本章小結(jié) 67
4.4.1 小問題集錦 67
4.4.2 小結(jié) 68
第2部分 算法篇
第5章 基礎題目選解 69
5.1 字符串 69
5.1.1 WERTYU 69
5.1.2 TeX括號 70
5.1.3 周期串 71
5.2 高精度運算 71
5.2.1 小學生算術(shù) 72
5.2.2 階乘的精確值 72
5.2.3 高精度運算類bign 73
5.2.4 重載bign的常用運算符 75
5.3 排序與檢索 77
5.3.1 6174問題 77
5.3.2 字母重排 78
5.4 數(shù)學基礎 81
5.4.1 Cantor的數(shù)表 81
5.4.2 因子和階乘 82
5.4.3 果園里的樹 84
5.4.4 多少塊土地 86
5.5 訓練參考 86
5.5.1 黑盒測試 86
5.5.2 在線評測系統(tǒng) 87
5.5.3 推薦題目 88
第6章 數(shù)據(jù)結(jié)構(gòu)基礎 89
6.1 棧和隊列 89
6.1.1 卡片游戲 89
6.1.2 鐵軌 91
6.2 鏈表 93
6.2.1 初步分析 93
6.2.2 鏈式結(jié)構(gòu) 95
6.2.3 對比測試 96
6.2.4 隨機數(shù)發(fā)生器 98
6.3 二叉樹 99
6.3.1 小球下落 99
6.3.2 層次遍歷 101
6.3.3 二叉樹重建 105
6.4 圖 106
6.4.1 黑白圖像 107
6.4.2 走迷宮 108
6.4.3 拓撲排序 110
6.4.4 歐拉回路 111
6.5 訓練參考 112
第7章 暴力求解法 114
7.1 簡單枚舉 114
7.1.1 除法 114
7.1.2 最大乘積 115
7.1.3 分數(shù)拆分 115
7.1.4 雙基回文數(shù) 116
7.2 枚舉排列 116
7.2.1 生成1~n的排列 116
7.2.2 生成可重集的排列 118
7.2.3 解答樹 118
7.2.4 下一個排列 119
7.3 子集生成 120
7.3.1 增量構(gòu)造法 120
7.3.2 位向量法 121
7.3.3 二進制法 122
7.4 回溯法 123
7.4.1 八皇后問題 123
7.4.2 素數(shù)環(huán) 126
7.4.3 困難的串 127
7.4.4 帶寬 128
7.5 隱式圖搜索 129
7.5.1 隱式樹的遍歷 129
7.5.2 一般隱式圖的遍歷 130
7.5.3 八數(shù)碼問題 131
7.5.4 結(jié)點查找表 133
7.6 訓練參考 136
第8章 高效算法設計 138
8.1 算法分析初步 138
8.1.1 漸進時間復雜度 138
8.1.2 上界分析 140
8.1.3 分治法 140
8.1.4 正確對待算法分析結(jié)果 142
8.2 再談排序與檢索 143
8.2.1 歸并排序 143
8.2.2 快速排序 145
8.2.3 二分查找 145
8.3 遞歸與分治 148
8.3.1 棋盤覆蓋問題 148
8.3.2 循環(huán)日程表問題 149
8.3.3 巨人與鬼 149
8.3.4 非線性方程求根 150
8.3.5 最大值最小化 151
8.4 貪心法 151
8.4.1 最優(yōu)裝載問題 151
8.4.2 部分背包問題 152
8.4.3 乘船問題 152
8.4.4 選擇不相交區(qū)間 152
8.4.5 區(qū)間選點問題 153
8.4.6 區(qū)間覆蓋問題 154
8.4.7 Huffman編碼 154
8.5 訓練參考 156
第3部分 競賽篇
第9章 動態(tài)規(guī)劃初步 158
9.1 數(shù)字三角形 158
9.1.1 問題描述與狀態(tài)定義 158
9.1.2 記憶化搜索與遞推 159
9.2 DAG上的動態(tài)規(guī)劃 161
9.2.1 DAG模型 161
9.2.2 最長路及其字典序 162
9.2.3 固定終點的最長路和最短路 163
9.3 0-1背包問題 167
9.3.1 多階段決策問題 167
9.3.2 規(guī)劃方向 168
9.3.3 滾動數(shù)組 169
9.4 遞歸結(jié)構(gòu)中的動態(tài)規(guī)劃 170
9.4.1 表達式上的動態(tài)規(guī)劃 170
9.4.2 凸多邊形上的動態(tài)規(guī)劃 171
9.4.3 樹上的動態(tài)規(guī)劃 171
9.5 集合上的動態(tài)規(guī)劃 172
9.5.1 狀態(tài)及其轉(zhuǎn)移 173
9.5.2 隱含的階段 173
9.6 訓練參考 174
第10章 數(shù)學概念與方法 176
10.1 數(shù)論初步 176
10.1.1 除法表達式 176
10.1.2 無平方因子的數(shù) 178
10.1.3 直線上的點 179
10.1.4 同余與模算術(shù) 180
10.2 排列與組合 182
10.2.1 楊輝三角與二項式定理 182
10.2.2 數(shù)論中的計數(shù)問題 184
10.2.3 編碼與解碼 186
10.2.4 離散概率初步 187
10.3 遞推關系 188
10.3.1 漢諾塔 188
10.3.2 Fibonacci數(shù)列 189
10.3.3 Catalan數(shù) 191
10.3.4 危險的組合 192
10.3.5 統(tǒng)計n-k特殊集的數(shù)目 193
10.4 訓練參考 194
第11章 圖論模型與算法 196
11.1 再談樹 196
11.1.1 無根樹轉(zhuǎn)有根樹 196
11.1.2 表達式樹 197
11.1.3 最小生成樹 199
11.1.4 并查集 200
11.2 最短路問題 201
11.2.1 Dijkstra算法 202
11.2.2 稀疏圖的鄰接表 203
11.2.3 使用優(yōu)先隊列的Dijkstra算法 204
11.2.4 Bellman-Ford算法 205
11.2.5 Floyd算法 206
11.3 網(wǎng)絡流初步 207
11.3.1 最大流問題 207
11.3.2 增廣路算法 208
11.3.3 最小割最大流定理 210
11.3.4 最小費用最大流問題 211
11.4 進一步學習的參考 212
11.4.1 編程語言 213
11.4.2 數(shù)據(jù)結(jié)構(gòu) 213
11.4.3 算法設計 213
11.4.4 數(shù)學 214
11.4.5 參賽指南 214
11.5 訓練參考 215
附錄A 開發(fā)環(huán)境與方法 216
A.1 命令行 216
A.1.1 文件系統(tǒng) 216
A.1.2 進程 217
A.1.3 程序的執(zhí)行 217
A.1.4 重定向和管道 218
A.1.5 常見命令 218
A.2 操作系統(tǒng)腳本編程入門 219
A.2.1 Windows下的批處理 219
A.2.2 Linux下的Bash腳本 220
A.2.3 再談隨機數(shù) 221
A.3 編譯器和調(diào)試器 221
A.3.1 gcc的安裝和測試 221
A.3.2 常見編譯選項 222
A.3.3 gdb簡介 223
A.3.4 gdb的高級功能 224
A.4 淺談IDE 225
算法競賽入門經(jīng)典第二版內(nèi)容截圖
- PC官方版
- 安卓官方手機版
- IOS官方手機版