本書是一本面向信息學(xué)競賽選手的從入門到精通的全面教程,旨在幫助讀者系統(tǒng)地學(xué)習(xí)和掌握C 程序設(shè)計(jì)、算法和數(shù)據(jù)結(jié)構(gòu)等關(guān)鍵知識(shí)點(diǎn)。 本書涵蓋五個(gè)單元:第一單元編程預(yù)備知識(shí)介紹了信息學(xué)競賽的基本概念、計(jì)算機(jī)中的數(shù)制和數(shù)據(jù)編碼等基礎(chǔ)知識(shí),為后續(xù)編程學(xué)習(xí)打下堅(jiān)實(shí)基礎(chǔ);第二單元C 程序設(shè)計(jì)基礎(chǔ)詳細(xì)講解了 C 的基本語法、數(shù)據(jù)類型、運(yùn)算符、控制結(jié)構(gòu)等,幫助讀者掌握 C 編程知識(shí);第三單元簡單算法介紹了排序、枚舉、高精度計(jì)算、二分查找、位運(yùn)算等基本算法,為解決復(fù)雜問題提供思路;第四單元數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)深入講解了棧、隊(duì)列、鏈表、圖、樹等數(shù)據(jù)結(jié)構(gòu),以及最短路徑、最小生成樹等相關(guān)算法,提升解決實(shí)際問題的能力;第五單元基礎(chǔ)數(shù)學(xué)知識(shí)涵蓋了素?cái)?shù)、篩法、約數(shù)、裴蜀定理等數(shù)學(xué)原理,為信息學(xué)競賽中的數(shù)學(xué)問題提供了解決方案。 本書內(nèi)容豐富、結(jié)構(gòu)清晰,適合初學(xué)者循序漸進(jìn)地學(xué)習(xí),也適合有一定基礎(chǔ)的讀者查漏補(bǔ)缺。
羅新河,瀏陽市田家炳實(shí)驗(yàn)中學(xué)信息技術(shù)高級(jí)教師,信息學(xué)奧賽高級(jí)教練員,瀏陽市中小學(xué)信息技術(shù)工作室首席名師,瀏陽市信息技術(shù)專業(yè)委員副理事長,長沙市信息技術(shù)專業(yè)委員理事。湖南省人工智能學(xué)會(huì)AI教育委員會(huì)第一屆副秘書長。輔導(dǎo)的學(xué)生一人獲NOI銅牌,10多人獲NOIP一等獎(jiǎng)。《信息學(xué)競賽的非智力因素研究》等多篇論文發(fā)表在國家級(jí)刊物。
第一單元 編程預(yù)備知識(shí) / 1
第 1 課 計(jì)算機(jī)中的數(shù)制 / 4
第 2 課 數(shù)據(jù)編碼 / 8
第二單元 C 程序設(shè)計(jì)基礎(chǔ) / 13
第 3 課 C 編譯環(huán)境與第一個(gè) C 程序 / 14
第 4 課 輸入與輸出語句 / 18
第 5 課 賦值語句 / 21
第 6 課 數(shù)據(jù)類型與運(yùn)算符 / 24
第 7 課 常量與變量 / 29
第 8 課 表達(dá)式 / 31
第 9 課 順序結(jié)構(gòu)程序 / 33
第 10 課 單分支結(jié)構(gòu) / 36
第 11 課 多分支結(jié)構(gòu) / 40
第 12 課 分支嵌套語句 / 45
第 13 課 for 語句 / 52
第 14 課 while 語句 / 56
第 15 課 一層循環(huán)結(jié)構(gòu) / 58
第 16 課 二層循環(huán)結(jié)構(gòu) / 60
第 17 課 多層循環(huán)結(jié)構(gòu) / 63
第 18 課 循環(huán)結(jié)構(gòu)的應(yīng)用(一) / 66
第 19 課 循環(huán)結(jié)構(gòu)的應(yīng)用(二) / 68
第 20 課 循環(huán)結(jié)構(gòu)的應(yīng)用(三) / 71
第 21 課 一維數(shù)組 / 77
第 22 課 一維數(shù)組的應(yīng)用(一) / 82
第 23 課 一維數(shù)組的應(yīng)用(二) / 87
第 24 課 多維數(shù)組 / 92
第 25 課 數(shù)組的綜合應(yīng)用 / 97
第 26 課 字符和字符串 / 102
第 27 課 字符串的綜合應(yīng)用 / 110
第 28 課 函數(shù) / 115
第 29 課 函數(shù)與遞歸 / 128
第 30 課 函數(shù)的綜合應(yīng)用 / 139
第 31 課 結(jié)構(gòu)體與聯(lián)合 / 143
第 32 課 指針 / 152
第 33 課 結(jié)構(gòu)體與指針綜合應(yīng)用 / 156
第 34 課 文件操作與單步調(diào)試 / 160
第 35 課 STL 中常用的函數(shù) / 165
第 36 課 STL 中的容器 / 183
第三單元 簡單算法 / 195
第 37 課 簡單排序 / 196
第 38 課 復(fù)雜排序 / 207
第 39 課 排序的應(yīng)用 / 216
第 40 課 暴力枚舉 / 219
第 41 課 高精度數(shù)加減法 / 230
第 42 課 高精度數(shù)乘除法 / 235
第 43 課 二分查找 / 239
第 44 課 二分答案與三分答案 / 244
第 45 課 位運(yùn)算 / 250
第 46 課 倍增 / 258
第 47 課 前綴和與差分 / 274
第 48 課 貪心算法 / 281
第 49 課 哈希表 / 291
第 50 課 遞歸算法 / 299
第 51 課 遞推算法 / 313
第 52 課 廣度優(yōu)先搜索 / 319
第 53 課 廣度優(yōu)先搜索練習(xí) / 325
第 54 課 廣度優(yōu)先搜索優(yōu)化與變形 / 331
第 55 課 啟發(fā)式搜索 / 341
第 56 課 深度優(yōu)先搜索 / 360
第 57 課 深度優(yōu)先搜索優(yōu)化 / 364
第 58 課 認(rèn)識(shí)動(dòng)態(tài)規(guī)劃 / 383
第 59 課 背包模型 / 397
第 60 課 一維線性動(dòng)態(tài)規(guī)劃 / 406
第 61 課 多維線性動(dòng)態(tài)規(guī)劃 / 412
第 62 課 動(dòng)態(tài)規(guī)劃綜合練習(xí) / 418
第四單元 數(shù)據(jù)結(jié)構(gòu)基礎(chǔ) / 427
第 63 課 棧與隊(duì)列 / 428
第 64 課 鏈表 / 438
第 65 課 認(rèn)識(shí)圖結(jié)構(gòu) / 444
第 66 課 圖結(jié)構(gòu)的應(yīng)用 / 453
第 67 課 最短路徑Dijkstra 算法 / 465
第 68 課 Bellman-Ford 算法與 SPFA 算法 / 471
第 69 課 Floyd 算法 / 477
第 70 課 最短路徑應(yīng)用 / 481
第 71 課 并查集 / 488
第 72 課 最小生成樹 / 495
第 73 課 Prim 算法 / 497
第 74 課 最小生成樹應(yīng)用 / 499
第 75 課 拓?fù)渑判?/ 502
第 76 課 樹結(jié)構(gòu)的基本概念 / 504
第 77 課 樹結(jié)構(gòu)的存儲(chǔ)與遍歷 / 506
第 78 課 二叉樹 / 512
第 79 課 二叉樹的遍歷 / 515
第 80 課 二叉搜索樹 / 517
第 81 課 哈夫曼樹與堆結(jié)構(gòu) / 519
第 82 課 二叉堆 / 524
第 83 課 樹狀樹組 / 528
第 84 課 線段樹 / 533
第 85 課 樹的直徑 / 537
第 86 課 課 LCA / 539
第 87 課 樹上差分 / 543
第 88 課 樹上動(dòng)態(tài)規(guī)劃 / 547
第 89 課 樹問題應(yīng)用 / 552
第五單元 基礎(chǔ)數(shù)學(xué)知識(shí) / 557
第 90 課 數(shù)學(xué)基本概念 / 558
第 91 課 素?cái)?shù) / 560
第 92 課 篩法 / 564
第 93 課 約數(shù) / 569
第 94 課 裴蜀定理 / 575
第 95 課 中國剩余定理 / 577
第 96 課 排列組合 / 579
第 97 課 康托展開與逆康托展開 / 583
第 98 課 抽屜原理與容斥原理 / 585
第 99 課 卡特蘭數(shù) / 587