本書是專門為中小學生編寫的一套信息學競賽教材。作者根據(jù)中國計算機學會發(fā)布的《全國青少年信息學奧林匹克系列競賽大綱》,把涉及的知識點按難度等級分成了初級篇、中級篇、高級篇三篇,對應三本教材,每本教材包含40章。本書是初級篇,包括基礎算法專題、進制轉換、位運算、編碼問題、數(shù)列問題、高精度、字符串處理、時間和日期處理、數(shù)據(jù)結構專題、排序專題、搜索專題、動態(tài)規(guī)劃專題、數(shù)論專題、組合數(shù)學專題、圖論專題等內容。每章都是先介紹算法思想或基礎知識,再結合經(jīng)典的競賽題目來講解算法的實現(xiàn)。本書配備了完善的題庫、課件、教學視頻等資源,可以作為中小學信息學競賽集訓隊的訓練教材,也可以作為少兒編程培訓機構的培訓教材,還可以作為少兒編程等級考試和編程競賽的輔導教材。
王桂平
計算機科學與技術專業(yè)博士、副教授、碩士研究生導師。自2003年起從事大學生程序設計競賽指導工作,帶隊參加過浙江省、重慶市、四川省、廣東省大學生程序設計大賽、中國大學生程序設計大賽、國際大學生程序設計大賽、團體程序設計天梯賽、藍橋杯全國軟件和信息技術專業(yè)人才大賽等賽事,指導學生累計獲得獎項100余項,省級獎項1000余項。
出版了《C++趣味編程及算法入門》《C+編程與信息學競賽數(shù)學基礎》《GESP編程能力等級認證一本通(C++一級)》《圖論算法理論、實現(xiàn)及應用》等多部著作;主持省部級教學研究項目5項,建設重慶市一流課程一門,以第一作者發(fā)表教學研究論文近20篇、科學研究論文30余篇(含SCI論文9篇、EI論文10篇),主持省部級科研項目3項,參與科研項目3項。兼任多所中小學信息學奧林匹克競賽特聘教練。
周祖松
中學信息技術高級教師,全國信息學競賽金牌指導教師,重慶市育才中學信息學競賽總教練。
重慶市基礎教育教研項目評審專家?guī)斐蓡T,重慶市九龍坡區(qū)九龍名師、九龍坡區(qū)中小學信息技術名師工作室主持人。中國計算機學會中小學計算機教育研討會副主席。
擔任全國信息學競賽指導教師培訓講師和冬令營授課講師。
指導學生參加全國信息學決賽(NOI)有8人獲金牌,7人進入國家集訓隊,2人獲國際初中生信息學競賽金牌。100多人獲全國青少年信息學奧林匹克聯(lián)賽(NOIP)一等獎。
萬毅
中學一級教師,重慶第一中學校信息科技教師及信息學競賽教練,重慶市沙坪壩區(qū)新秀骨干教師,全國青少年信息學奧林匹克競賽指導教師,國培計劃(2023)中西部骨干教師項目優(yōu)秀學員。
陳胤戩
重慶市育才中學信息學競賽教練,曾獲得NOI2020金牌,多次參加ICPC和CCPC區(qū)域賽并全部獲得金牌,2023年參加GPLT團體程序設計天梯賽并榮獲個人登頂先鋒。
目 錄
第1章 基礎算法1:枚舉算法
1.1 枚舉算法的思想及實現(xiàn)要點
1.2 案例1:積木
1.3 案例2:自我數(shù)
1.4 案例3:龍虎斗
第2章 基礎算法2:模擬算法
2.1 模擬算法的思想及實現(xiàn)要點
2.2 笛卡兒坐標系和網(wǎng)格中的坐標系
2.3 案例1:醉酒的獄卒
2.4 案例2:掃雷游戲
2.5 案例3:螺旋矩陣
第3章 基礎算法3:遞推和遞歸
3.1 遞推和遞歸
3.2 案例1:數(shù)的計算
3.3 案例2:整數(shù)劃分問題
3.4 案例3:三角形的個數(shù)
3.5 函數(shù)及遞歸函數(shù)設計
第4章 基礎算法4:貪心算法
4.1 貪心算法的思想
4.2 案例1:活動安排問題
4.3 貪心算法的基本要素
4.4 0-1背包問題和部分背包問題
4.5 案例2:公路
4.6 案例3:紀念品分組
第5章 基礎算法5:分治法
5.1 分治法的思想
5.2 案例1:棋盤覆蓋問題
5.3 案例2:冪次方
5.4 案例3:分形
第6章 基礎算法6:二分法及應用
6.1 二分法
6.2 二分查找
6.3 二分答案
6.4 C++中的二分查找函數(shù)
6.5 案例1:復合單詞
6.6 案例2:墾田計劃
6.7 案例3:跳石頭
第7章 進制的思想及進制轉換
7.1 數(shù)位和計數(shù)單位
7.2 進制及進制轉換
7.3 實現(xiàn)進制轉換的庫函數(shù)
7.4 標準模板庫中的位組(bitset)
7.5 案例1:統(tǒng)計好數(shù)
7.6 案例2:優(yōu)秀的拆分
7.7 案例3:回文數(shù)
第8章 位運算及應用
8.1 位運算
8.2 位運算的應用
8.3 案例1:關燈游戲
8.4 案例2:格雷碼
8.5 案例3:動物園
第9章 編碼問題及處理
9.1 從ASCII編碼說起
9.2 字符編碼問題
9.3 案例1:圓括號編碼
9.4 案例2:莫爾斯電碼
9.5 案例3:Vigenère密碼
第10章 數(shù)列問題及處理
10.1 數(shù)列及相關問題
10.2 等差數(shù)列和等比數(shù)列
10.3 案例1:數(shù)列1, 1, 2, 1, 2, 3
10.4 案例2:中位數(shù)數(shù)列
10.5 案例3:數(shù)列
第11章 高精度1:高精度計算的基本原理
11.1 高精度數(shù)
11.2 用字符型數(shù)組或整型數(shù)組實現(xiàn)算術運算
11.3 高精度計算原理
11.4 高精度計算要點
11.5 案例1:統(tǒng)計加法運算的進位次數(shù)
11.6 案例2:skew二進制
11.7 案例3:雙塔問題
第12章 高精度2:高精度數(shù)加減法和乘法
12.1 高精度數(shù)的加減法和乘法
12.2 高精度運算的壓位處理
12.3 案例1:高精度數(shù)的加法
12.4 案例2:高精度數(shù)的乘法
12.5 案例3:麥森數(shù)
第13章 字符及字符串處理(1)
13.1 字符串處理函數(shù)
13.2 字符串類string
13.3 字符轉換
13.4 案例1:ISBN
13.5 案例2:解密
13.6 案例3:打字糾錯
第14章 字符及字符串處理(2)
14.1 回文字符串
14.2 案例1:構造回文
14.3 案例2:鏡像回文
14.4 案例3:回文日期
第15章 字符及字符串處理(3)
15.1 子串與子序列的處理
15.2 案例1:字符串包含問題
15.3 案例2:字符串的冪
15.4 案例3:統(tǒng)計單詞數(shù)
第16章 時間和日期的處理
16.1 時間和日期處理的相關問題
16.2 案例1:相隔天數(shù)
16.3 案例2:黑色星期五
16.4 案例3:儒略日
第17章 數(shù)據(jù)結構1:數(shù)組和向量
17.1 數(shù)據(jù)結構基本概念
17.2 標準模板庫
17.3 向量
17.4 案例1:明明的隨機數(shù)
17.5 案例2:中位數(shù)
17.6 案例3:公交換乘
第18章 數(shù)據(jù)結構2:棧
18.1 棧
18.2 n個元素有多少種出棧順序
18.3 案例1:括號串匹配
18.4 案例2:奇特的火車站
18.5 案例3:表達式求值
第19章 數(shù)據(jù)結構3:隊列
19.1 隊列
19.2 案例1:約瑟夫環(huán)問題
19.3 案例2:海港
19.4 案例3:等待時間
第20章 數(shù)據(jù)結構4:集合
20.1 數(shù)學上的集合
20.2 STL中的集合
20.3 案例1:第N個回文數(shù)
20.4 案例2:集合的遞歸定義
20.5 案例3:考勤刷卡
第21章 數(shù)據(jù)結構5:用數(shù)組模擬鏈表
21.1 數(shù)據(jù)結構的物理順序和邏輯順序
21.2 線性數(shù)據(jù)結構和非線性數(shù)據(jù)結構
21.3 順序結構和鏈式結構
21.4 線性表:順序表和鏈表
21.5 案例1:鏈表結點的物理/邏輯順序
21.6 用數(shù)組模擬鏈表
21.7 案例2:好友關系
21.8 案例3:隊列安排
第22章 數(shù)據(jù)結構6:樹的概念及存儲
22.1 非線性數(shù)據(jù)結構——樹
22.2 圖結構和樹結構
22.3 二叉樹
22.4 樹和二叉樹的存儲
22.5 二叉樹的遍歷
22.6 案例1:二叉樹深度
22.7 案例2:新二叉樹
22.8 案例3:FBI樹
第23章 排序及排序函數(shù)的使用
23.1 排序及排序算法
23.2 排序的應用
23.3 排序函數(shù)sort的用法
23.4 案例1:快樂的蠕蟲
23.5 案例2:英文姓名排序
23.6 案例3:圖書館管理員
第24章 排序算法原理及應用
24.1 歸并排序算法
24.2 快速排序算法
24.3 案例1:求逆序對問題
24.4 案例2:Freda的越野跑
24.5 案例3:求第k小的數(shù)
第25章 搜索1:深度優(yōu)先搜索
25.1 深度優(yōu)先搜索的思想
25.2 案例1:油田
25.3 案例2:最大的泡泡串
25.4 案例3:選數(shù)
25.5 深度優(yōu)先搜索技巧
第26章 搜索2:廣度優(yōu)先搜索
26.1 廣度優(yōu)先搜索的思想
26.2 案例1:馬走日
26.3 案例2:電影系列之《預見未來》
26.4 案例3:回家
第27章 搜索3:搜索的剪枝優(yōu)化
27.1 搜索的剪枝優(yōu)化
27.2 案例1:骨頭的誘惑
27.3 案例2:小木棍
27.4 案例3:棋盤
第28章 DP1:動態(tài)規(guī)劃的基本思路
28.1 動態(tài)規(guī)劃算法的引入——從數(shù)字網(wǎng)格說起
28.2 動態(tài)規(guī)劃算法的思想
28.3 動態(tài)規(guī)劃算法的4個要素
28.4 案例1:數(shù)字網(wǎng)格
28.5 動態(tài)規(guī)劃算法的變形——備忘錄方法
28.6 案例2:單調回文分解
28.7 案例3:最大子段和
第29章 DP2:一維和二維動態(tài)規(guī)劃
29.1 一維和二維動態(tài)規(guī)劃
29.2 案例1:積木畫
29.3 案例2:最大的子矩陣和
29.4 案例3:最大正方形的邊長
第30章 DP3:背包類型動態(tài)規(guī)劃
30.1 背包問題及求解算法
30.2 案例1:0-1背包問題
30.3 案例2:比誰猜得準
30.4 案例3:砝碼稱重
第31章 數(shù)論1:整除理論及應用
31.1 自然數(shù)與整數(shù)
31.2 整除
31.3 篩選法求質數(shù)
31.4 哥德巴赫猜想
31.5 案例1:半質數(shù)
31.6 案例2:篩選法求質數(shù)
31.7 案例3:哥德巴赫猜想
第32章 數(shù)論2:最大公約數(shù)理論及應用
32.1 最大公約數(shù)、互質、最小公倍數(shù)
32.2 帶余數(shù)除法與輾轉相除法
32.3 最大公約數(shù)理論
32.4 案例1:等差數(shù)列
32.5 案例2:最大公約數(shù)和最小公倍數(shù)
32.6 格點問題
32.7 案例3:兔八哥與獵人
第33章 數(shù)論3:唯一分解定理及應用
33.1 唯一分解定理
33.2 符號[x],n!的分解式
33.3 案例1:求標準質因數(shù)分解式
33.4 案例2:正除數(shù)個數(shù)和正除數(shù)的和
33.5 案例3:n!的標準質因數(shù)分解式
第34章 數(shù)論4:同余理論及應用
34.1 同余
34.2 a對模m的逆
34.3 同余類(剩余類)
34.4 同余方程
34.5 中國剩余定理
34.6 案例1:各位數(shù)字全為1的數(shù)
34.7 案例2:Niven數(shù)
34.8 案例3:韓信點兵
第35章 組合數(shù)學1:加法原理和乘法原理
35.1 加法原理和乘法原理
35.2 排列和組合公式
35.3 全排列及排列的字典序
35.4 生成序列全排列的函數(shù)
35.5 案例1:網(wǎng)格路徑
35.6 案例2:產(chǎn)生數(shù)
35.7 案例3:過河卒
第36章 組合數(shù)學2:用DFS求解排列組合問題
36.1 用DFS求解排列組合問題
36.2 案例1:質數(shù)環(huán)問題
36.3 案例2:方形硬幣
36.4 案例3:正方形
第37章 圖論1:圖的基本概念和圖的存儲
37.1 哥尼斯堡七橋問題
37.2 小世界理論
37.3 圖的基本概念
37.4 圖的存儲表示
37.5 案例1:求頂點度數(shù)
37.6 編程解題時靈活地存儲圖
37.7 用向量數(shù)組實現(xiàn)鄰接表并求頂點度數(shù)
37.8 案例2:道路網(wǎng)絡
37.9 案例3:共同好友數(shù)
第38章 圖論2:圖的深度優(yōu)先搜索
38.1 圖的深度優(yōu)先搜索
38.2 圖的深度優(yōu)先搜索的實現(xiàn)
38.3 案例1:紅與黑
38.4 案例2:七段碼數(shù)碼管
38.5 用向量數(shù)組實現(xiàn)加權圖的鄰接表
38.6 案例3:道路修建
第39章 圖論3:圖的廣度優(yōu)先搜索
39.1 圖的廣度優(yōu)先搜索
39.2 圖的廣度優(yōu)先搜索的實現(xiàn)
39.3 案例1:奇怪的電梯
39.4 案例2:迷宮
39.5 案例3:醫(yī)院選址問題
第40章 圖論4:DAG和拓撲排序
40.1 AOV網(wǎng)絡和拓撲排序
40.2 拓撲排序算法
40.3 案例1:拓撲排序實現(xiàn)
40.4 關于拓撲排序的進一步說明
40.5 案例2:將所有元素排序
40.6 案例3:最大食物鏈計數(shù)
附錄A 標識符命名規(guī)范與代碼規(guī)范
附錄B 課程資源使用說明
參考文獻