我的第一本算法競賽啟蒙書
鐘旸 陳茁 羅雲珂
- 出版商: 科學出版
- 出版日期: 2026-06-01
- 售價: $468
- 語言: 簡體中文
- ISBN: 703083819X
- ISBN-13: 9787030838193
-
相關分類:
Algorithms-data-structures
下單後立即進貨 (約4週~6週)
商品描述
本書旨在為零基礎的青少年提供一套系統、科 學、循序漸進的CSP算法競賽入門解決方案。全書共 分12章,按照“語言基礎→算法與數學思維→數據 結構與圖論入門”三個梯度層層遞進,內容涵蓋C++ 基本語法、程序控制結構,以及初等數論、遞歸分 治、動態規劃、圖論與STL容器等核心知識。本書特 色鮮明:從數學原理自然引出算法,揭示經典算法 背後的數學結構;大量運用示意圖,使覆雜邏輯直 觀可感;知識點環環相扣,緊密貼合CSP-J/S考綱 ;學練結合,配套 評測平臺提供實時反饋,真 正實現“知行合一
目錄大綱
第 1 章 輕松寫程序 1
1.1 程序概念與 C++ 基礎程序 1
1.1.1 程序概念 1
1.1.2 C++ 基礎程序 2
1.1.3 小節練習 3
1.2 輸出指令 4
1.2.1 cout 指令 4
1.2.2 換行指令 5
1.2.3 小節練習 6
1.3 數據運算 6
1.3.1 引例 6
1.3.2 數據的分類 7
1.3.3 變量的創建 8
1.3.4 變量的使用 8
1.3.5 完整程序示例 9
1.3.6 小節練習 10
1.4 數據類型 11
1.4.1 數據溢出以及其他數據類型 11
1.4.2 格式化輸出 13
1.4.3 運算中的數據類型匹配 14
1.4.4 商和餘數 15
1.4.5 小節練習 15
1.5 順序結構程序設計 16
1.5.1 設計程序示例與註釋 16
1.5.2 向上取整與向下取整 17
1.5.3 常用函數 18
1.6 覆習題 19
第 2 章 選擇分支結構 21
2.1 選擇分支結構 21
2.1.1 if 語句 21
2.1.2 關系運算符 22
2.1.3 else 分支 23
2.1.4 else if 分支擴展 25
2.1.5 小節練習 27
2.2 表達式與邏輯運算 27
2.2.1 表達式求值 28
2.2.2 逗號運算符 29
2.2.3 真值與 bool 類型 29
2.2.4 邏輯運算符 31
2.2.5 運算符優先級 32
2.2.6 小節練習 33
2.3 選擇分支結構設計 33
2.3.1 選擇分支結構設計示例 33
2.3.2 嵌套分支與並列分支 36
2.3.3 switch 結構 38
2.3.4 三目運算符 40
2.4 覆習題 41
第 3 章 循環結構 43
3.1 探究循環結構 43
3.1.1 while 循環 43
3.1.2 增量運算符、減量運算符、新的賦值運算符 45
3.1.3 控制循環的三要素 46
3.1.4 for 循環與 do while 循環 47
3.1.5 小節練習 49
3.2 循環流程設計 49
3.2.1 設計循環流程的要點 49
3.2.2 控制循環的輔助方法 52
3.2.3 靈活的 while 循環 55
3.2.4 嵌套循環及變量作用域 56
3.2.5 小節練習 59
3.3 初識算法 59
3.3.1 算法概念 60
3.3.2 最值算法 60
3.3.3 問題模擬 62
3.3.4 程序的優化 * 64
3.3.5 小節練習 69
3.4 覆習題 70
第 4 章 數組 71
4.1 一維數組 71
4.1.1 引例 71
4.1.2 數組的創建與使用 72
4.1.3 數組初始化 74
4.1.4 小節練習 76
4.2 數組下標與數據關聯 77
4.2.1 數組下標 77
4.2.2 數據關聯 79
4.2.3 小節練習 82
4.3 二維數組 82
4.3.1 二維數組的基本使用 82
4.3.2 二維數組的應用 84
4.3.3 二維數組的越界問題 87
4.3.4 小節練習 88
4.4 C++ 數組容器 89
4.4.1 std::array 89
4.4.2 std::vector 90
4.5 覆習題 92
第 5 章 字符與字符串 93
5.1 字符類型 93
5.1.1 字符變量 93
5.1.2 ASCII 碼 93
5.1.3 字符數據的相關運算 94
5.1.4 轉義字符 96
5.1.5 小節練習 97
5.2 字符串的使用 97
5.2.1 字符數組與字符串 97
5.2.2 輸入流 * 100
5.2.3 string 類型及其使用 103
5.2.4 小節練習 108
5.3 覆習題 109
第 6 章 函數與結構體 110
6.1 函數 110
6.1.1 什麼是函數 110
6.1.2 函數的定義以及使用 111
6.1.3 函數的核心特性:實參、形參與引用 114
6.1.4 地址與指針 118
6.1.5 小節練習 120
6.2 結構體 121
6.2.1 結構體的創建與使用 121
6.2.2 結構體與函數 123
6.2.3 小節練習 127
6.3 覆習題 128
第 7 章 算法 129
7.1 算法概念與排序算法 129
7.1.1 算法概念 129
7.1.2 排序算法 130
7.1.3 結構體排序與排序穩定性 135
7.1.4 小節練習 137
7.2 線性搜索與二分搜索 138
7.2.1 線性搜索 138
7.2.2 二分搜索 138
7.2.3 枚舉 140
7.2.4 二分答案 141
7.2.5 小節練習 143
7.3 算法的效率評估 144
7.3.1 大 O 標記 144
7.3.2 時間覆雜度 145
7.3.3 空間覆雜度 148
7.3.4 小節練習 149
7.4 STL 與其他算法範式 150
7.4.1 STL 中的部分算法函數 150
7.4.2 算法範式 154
7.4.3 小節練習 157
7.5 覆習題 157
第 8 章 初等數論 159
8.1 整除性與模運算 159
8.1.1 整除與除法運算 159
8.1.2 模運算與同餘 160
8.1.3 小節練習 163
8.2 整數的表示與計算 164
8.2.1 進制展開式 164
8.2.2 構造整數的 b 進制展開式 165
8.2.3 整數的運算算法 167
8.2.4 計算機中整數的表示 171
8.2.5 小數的表示 * 174
8.2.6 小節練習 175
8.3 質數與最大公約數 176
8.3.1 質數與算術基本定理 176
8.3.2 試除法 177
8.3.3 質數篩法 179
8.3.4 最大公約數與最小公倍數 182
8.3.5 小節練習 184
8.4 覆習題 184
第 9 章 遞歸與分治 186
9.1 遞歸 186
9.1.1 遞歸定義 186
9.1.2 遞歸算法 187
9.1.3 深度優先搜索 189
9.1.4 遞歸與疊代 191
9.1.5 記憶化遞歸 193
9.1.6 小節練習 193
9.2 分治算法 194
9.2.1 漢諾塔問題 194
9.2.2 分治算法的基本步驟 195
9.2.3 歸並排序 196
9.2.4 快速排序 198
9.2.5 小節練習 201
9.3 覆習題 201
第 10 章 計數 203
10.1 計數的基本原理 203
10.1.1 乘法原理 203
10.1.2 加法原理 204
10.1.3 綜合的計數問題 205
10.1.4 通過枚舉求解計數問題 206
10.1.5 減法原理與除法原理 208
10.1.6 小節練習 210
10.2 排列與組合 211
10.2.1 排列 211
10.2.2 組合 212
10.2.3 二項式系數及其應用 213
10.2.4 排列與組合的擴展 215
10.2.5 小節練習 220
10.3 枚舉排列與枚舉子集 220
10.3.1 枚舉排列 221
10.3.2 枚舉子集 223
10.3.3 小節練習 225
10.4 遞推與動態規劃 225
10.4.1 遞推關系 226
10.4.2 動態規劃 229
10.4.3 背包問題 233
10.4.4 序列類動態規劃 237
10.4.5 區間動態規劃 241
10.4.6 小節練習 244
10.5 覆習題 244
第 11 章 基礎數據結構 247
11.1 前綴和與差分 247
11.1.1 前綴和 248
11.1.2 前綴思想 249
11.1.3 差分 251
11.1.4 小節練習 253
11.2 棧 253
11.2.1 棧的操作 253
11.2.2 STL 棧 255
11.2.3 數組模擬棧 257
11.2.4 棧的應用 258
11.2.5 小節練習 260
11.3 隊列 260
11.3.1 隊列的操作及 STL 隊列 260
11.3.2 數組模擬隊列 262
11.3.3 滑動窗口技巧 264
11.3.4 小節練習 265
11.4 鏈表 266
11.4.1 鏈表的特征及基本操作 266
11.4.2 數組模擬鏈表 268
11.4.3 STL 鏈表 270
11.4.4 擴展補充:結構體 + 指針實現鏈表 * 272
11.4.5 小節練習 274
11.5 其他 STL 常用數據結構 275
11.5.1 set 275
11.5.2 map 277
11.5.3 priority_queue 281
11.5.4 小節練習 282
11.6 覆習題 283
第 12 章 圖與樹 285
12.1 圖論基礎 285
12.1.1 圖模型 285
12.1.2 圖的術語 288
12.1.3 圖的表示與存儲 289
12.1.4 小節練習 292
12.2 圖的遍歷 293
12.2.1 深度優先搜索 293
12.2.2 廣度優先搜索 294
12.2.3 Flood Fill 295
12.2.4 拓撲排序 297
12.2.5 小節練習 299
12.3 樹形結構 300
12.3.1 樹的術語 300
12.3.2 樹的表示與存儲 301
12.3.3 回溯 304
12.3.4 小節練習 305
12.4 二叉樹 306
12.4.1 二叉樹及其性質 306
12.4.2 二叉樹的遍歷 310
12.4.3 二叉樹的應用 312
12.4.4 小節練習 316
12.5 覆習題 317
