我的第一本算法競賽啟蒙書

鐘旸 陳茁 羅雲珂

  • 出版商: 科學出版
  • 出版日期: 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