48課搞定信息學奧賽:C++趣味編程
李超(@bigbigli)
相關主題
商品描述
本書是一本專為CSP-J/S參賽選手打造的備賽指南,旨在幫助讀者從零基礎起步,系統掌握C++編程語言和競賽算法,最終具備沖擊信息學奧賽獎項的能力。全書內容編排科學合理,由淺入深,從最基礎的 C++語法(如變量、數據類型、運算符、流程控制)講起,逐步過渡到數組、字符串、排序算法等核心知識,再深入講解枚舉、遞推、遞歸、二分查找等基礎算法,並重點剖析貪心算法、深度優先搜索(DFS)、廣度優先搜索(BFS)、動態規劃(DP)等競賽高頻考點,最後系統介紹棧、隊列、鏈表、樹、圖等數據結構及其應用。
本書適合8歲以上對信息學奧賽或C++感興趣的中小學生,也適合從事信息學奧賽教學的教師,或作為線下培訓機構的教材。
作者簡介
本書作者7年信息學教學教研經驗,僅2024年所帶信奧CSP-J集訓學員就達到4000余名,全國TOP。所錄制的“信息學奧賽”系列教學視頻在B站總播放達到30萬+,深受好評。 B站萬粉UP主、公眾號萬粉博主。
目錄大綱
第 1 章 順序結構 1
11 程序入門 1
111 C++簡介 1
112 軟件使用 2
113 標準輸出語句 5
114 實例講解 6
12 初識變量 10
121 什麼是變量 10
122 變量的定義 10
123 變量的賦值 11
124 變量的輸出 12
125 標準輸入 12
126 實例講解 13
13 實數類型 16
131 實數類型的相關操作 17
132 實例講解一 17
133 格式化輸出 18
134 實例講解二 20
14 除法和求余 22
141 整數除法 22
142 浮點數除法 23
143 實例講解一 24
144 余數的定義及註意事項 25
145 實例講解二 27
15 強制類型轉換 29
151 整型轉換成浮點型 29
152 實例講解一 30
153 浮點型轉換成整型 32
154 實例講解二 32
16 字符類型與ASCII 碼 34
161 ASCII 碼 34
162 字符類型 35
163 字符轉換成ASCII 碼 36
164 ASCII 碼轉換成字符 37
165 字符的算術運算 38
166 大小寫字母轉換 39
17 順序結構及復合運算 40
171 順序結構總結 40
172 變量的連續賦值 41
173 實例講解一 42
174 變量的自增自減 42
175 復合運算符 43
176 實例講解二 44
177 交換兩個變量的值 44
第 2 章 選擇結構 46
21 單分支結構 46
211 條件表達式和關系運算符 47
212 奇偶數問題 48
213 位數判斷 49
214 打折問題 50
22 雙分支結構 51
221 實例講解 52
222 邏輯運算符 53
223 字母大小寫判斷 55
23 選擇嵌套結構 56
231 選擇嵌套框架 56
232 實例講解一 57
233 三角形的成立條件 59
234 實例講解二 59
24 多分支結構 62
241 多分支結構的基本框架 63
242 實例講解 64
243 不同三角形判斷 65
244 運算符優先級 66
25 switch 結構 68
251 switch 語句的基本框架 68
252 switch 語句的執行過程 69
253 實例講解 70
第3 章 循環結構 75
31 for 循環 75
311 程序執行的順序 76
312 死循環 77
313 實例講解 77
314 逆序輸出 80
32 循環求和 81
321 循環求和的操作 81
322 實例講解 82
33 循環求積 85
331 循環求積的操作 85
332 實例講解 86
34 while 循環 91
341 while 循環的基本框架 91
342 while 中的死循環 91
343 實例講解 92
35 循環中斷與繼續 96
351 循環中斷break 96
352 實例講解一 97
353 循環繼續continue 98
354 實例講解二 98
36 循環嵌套 100
361 循環嵌套的基本操作 101
362 實例講解 101
第4 章 數組與字符串 107
41 一維數組 107
411 數組的概念及定義 107
412 實例講解 108
42 二維數組 112
421 二維數組的定義與操作 112
422 實例講解一 114
423 矩陣對角線 117
424 實例講解二 118
43 字符串與字符數組 120
431 字符串 121
432 字符數組 122
44 字符數組的基本操作 126
441 輸入和輸出 126
442 實例講解 127
443 復制與比較 129
第5 章 排序算法 134
51 選擇排序 134
511 選擇排序的概念和步驟 134
512 演示及實現 135
513 實例講解 136
52 冒泡排序 138
521 冒泡排序的概念及步驟 138
522 演示及實現 139
523 實例講解 140
524 冒泡排序優化 141
53 插入排序 143
531 插入排序的概念及步驟 143
532 演示及實現 144
533 實例講解 145
54 計數排序 147
541 計數排序的概念及步驟 147
542 演示及實現 147
543 實例講解 148
544 計數排序的去重與計數 149
第6 章 基礎算法 152
61 暴力枚舉 152
611 枚舉的概念與案例實現 152
612 枚舉的優缺點 155
613 實例講解 155
62 遞推算法 158
621 遞推算法的概念 158
622 實例講解 160
63 認識函數 165
631 函數的定義 166
632 形參與實參 167
633 函數的聲明 169
634 函數的值傳遞和引用傳遞 170
635 數組作為函數參數 173
64 結構體及排序 174
641 定義及操作 175
642 實例講解 175
643 結構體成員函數 178
644 結構體排序 181
65 遞歸算法 184
651 遞歸的實例演示 184
652 遞歸的三大要素 185
653 實例講解 185
654 漢諾塔問題 190
66 二分查找 192
661 二分查找的概念 192
662 二分查找的操作 193
663 二分查找的優勢 194
664 實例講解 194
第7 章 數學問題 201
71 因數、公約數和公倍數 201
711 因數及其相關知識 202
712 最大公約數 203
713 輾轉相除法 204
714 最小公倍數 205
72 質數和合數 207
721 質數的概念及判斷 208
722 合數和質因數 211
723 埃拉托斯特尼篩 212
第8 章 模擬算法 215
81 一維數組模擬 215
811 核心考查 215
812 實例講解 215
82 二維數組模擬 223
821 核心考查 223
822 實例講解 223
83 日期模擬 231
831 基礎模板 231
832 實例講解 233
84 字符串模擬 239
841 常見應用場景 239
842 字符串常用函數 239
843 實例講解 240
第9 章 算法進階 246
91 貪心算法 246
911 策略演示 246
912 概念及證明 247
913 實例講解 247
92 深度優先搜索 253
921 情景引入及建模 253
922 深搜模板 256
923 實例講解 257
93 廣度優先搜索 263
931 情景引入及建模 263
932 廣搜模板 268
933 實例講解 269
94 動態規劃 274
941 記憶化搜索 274
942 動態規劃 276
943 實例講解 277
第 10 章 數據結構 283
101 棧及其應用 283
1011 棧的定義、特點和操作 283
1012 STL 中棧的基本使用 285
1013 實例講解 285
102 隊列及其應用 291
1021 隊列的定義和特點 291
1022 數組模擬隊列 292
1023 STL 中隊列的基本使用 296
103 鏈表及其操作 299
1031 單鏈表 299
1032 指針 301
1033 單鏈表的相關操作 302
1034 完整操作 306
104 樹及其應用 309
1041 樹的相關概念 310
1042 二叉樹及其相關概念 311
1043 二叉樹的遍歷 313
1044 二叉樹的建立 315
105 圖及其應用 316
1051 圖的定義及相關概念 316
1052 圖的存儲 318
106 圖的最短路徑 321
1061 Floyd 算法 321
1062 Floyd 算法實例講解 325
1063 Dijkstra 算法 327
1064 Dijkstra 算法實例講解 331
附錄A 信息學奧賽成長指南 335