CCF 信息學(xué)奧賽基礎(chǔ)篇 中國計算機(jī)學(xué)會
定 價:99 元
- 作者:中國計算機(jī)學(xué)會
- 出版時間:2025/8/1
- ISBN:9787111782339
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書是“CCF全國青少年信息學(xué)奧林匹克競賽教程”叢書的第二冊,旨在普及計算機(jī)科學(xué)與程序設(shè)計知識。書中遵循由淺入深、邏輯嚴(yán)密的編寫思路,輔以豐富的實例解析,引領(lǐng)讀者逐步提升計算思維能力。全書共四章,涉及C++程序設(shè)計進(jìn)階、數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用、算法設(shè)計、數(shù)學(xué)運用等內(nèi)容,全面覆蓋NOI競賽大綱所要求的基礎(chǔ)知識。根據(jù)競賽的特點,書中還對一些常見的難點和易錯點進(jìn)行了深入的解析。 本書可作為信息學(xué)奧林匹克競賽的教學(xué)用書,也可作為青少年學(xué)習(xí)計算機(jī)科學(xué)知識、了解信息學(xué)奧賽的參考資料。
本書由中國計算機(jī)學(xué)會組編,適合NOI參賽師生/信息學(xué)愛好者/程序設(shè)計競賽愛好者。 本書特色: 關(guān)注學(xué)習(xí)過程,強(qiáng)調(diào)反思意識解決, 引導(dǎo)主動探究,建構(gòu)知識體系。
在信息學(xué)的廣闊天地中,編程不僅是一種技術(shù),更是一門藝術(shù)。自1984年中國計算機(jī)學(xué)會舉辦青少年信息學(xué)奧林匹克競賽以來,編程逐漸成為青少年科技教育的重要組成部分。這種教育不僅培養(yǎng)了無數(shù)青少年的編程能力,也激發(fā)了他們對計算機(jī)科學(xué)的熱情和探索欲望。近年來,CCF組織編撰了《全國青少年信息學(xué)奧林匹克系列競賽大綱》(以下簡稱“NOI競賽大綱”)、《信息學(xué)奧林匹克辭典》,本書正是在此基礎(chǔ)之上編寫而成的,旨在為廣大青少年提供一本深入淺出、實用高效的編程教材。我們發(fā)現(xiàn),盡管已經(jīng)出版了不少相關(guān)書籍,但真正能夠契合青少年學(xué)習(xí)特點、兼顧理論深度與實踐應(yīng)用、精準(zhǔn)覆蓋NOI競賽大綱的教材仍然稀缺。因此,我們希望通過這本“不一樣”的書,為讀者搭建一座從概念理解到實際運用的橋梁,讓中小學(xué)編程愛好者能夠迅速成長。本書具有以下幾個突出特點:1循序漸進(jìn),深入淺出我們精心設(shè)計了一條由淺入深的學(xué)習(xí)路徑。通過“情境導(dǎo)航”環(huán)節(jié),從生活常識出發(fā),引入問題。通過豐富的圖示和通俗易懂的語言講解核心概念,再逐步過渡到更復(fù)雜的算法實現(xiàn)。這種漸進(jìn)式的學(xué)習(xí)方法旨在激發(fā)讀者的學(xué)習(xí)興趣,建立直觀的算法和數(shù)據(jù)結(jié)構(gòu)認(rèn)識,并避免因概念陡增引起的畏難情緒。2問題導(dǎo)向,實踐驅(qū)動通過“問題抽象”環(huán)節(jié),從分析問題入手,抽象出知識或概念。每節(jié)都從一個實際問題(有些是經(jīng)典競賽題)出發(fā),引導(dǎo)讀者分析問題、思考解決方案,然后學(xué)習(xí)相關(guān)算法原理,找出解決問題的基本方法,最后通過程序代碼來鞏固所學(xué)知識。這種問題導(dǎo)向的方法不僅能激發(fā)讀者的學(xué)習(xí)興趣,更能培養(yǎng)他們解決實際問題的能力。3強(qiáng)調(diào)思維訓(xùn)練除了傳授具體的算法知識之外,我們十分注重培養(yǎng)讀者的算法思維。每節(jié)都設(shè)有“知識探究”“實踐應(yīng)用”“總結(jié)提升”等環(huán)節(jié),引導(dǎo)并鼓勵讀者獨立思考、大膽假設(shè)、認(rèn)真求證。通過這種方式,我們希望讀者不僅學(xué)會“是什么”,更能理解“為什么”。通過給出注意事項和拓展方向,引導(dǎo)讀者進(jìn)一步鉆研,最終達(dá)到舉一反三、觸類旁通的目的。4緊扣競賽實戰(zhàn)作為一本面向信息學(xué)競賽的教材,我們特別關(guān)注了競賽中的重點和難點。本書圍繞著信息學(xué)競賽的核心需求編寫,精選了很多經(jīng)典的競賽題目,通過詳盡的解析和豐富的實例,向讀者展示從問題分析到解決方案的全過程。此外,根據(jù)競賽的特點,對一些常見的競賽難點和易錯點進(jìn)行了深入的剖析和講解。我們希望這些內(nèi)容能夠幫助讀者更快地適應(yīng)競賽節(jié)奏,提高解題速度和準(zhǔn)確率。5注重知識體系構(gòu)建在信息學(xué)領(lǐng)域,編程和算法是兩項不可或缺的核心技能。本書作為系列教材的基礎(chǔ)篇,涵蓋了NOI競賽大綱中入門級的算法與數(shù)據(jù)結(jié)構(gòu)知識,這些知識是構(gòu)建信息學(xué)競賽完整知識體系的重要環(huán)節(jié)。本書適合參加信息學(xué)奧林匹克競賽的學(xué)生使用,同時也適合對信息學(xué)算法感興趣的讀者閱讀。我們希望本書能夠幫助讀者在競賽中取得更好的成績,同時也為他們未來的學(xué)習(xí)和發(fā)展打下堅實的基礎(chǔ)。本書是一把開啟智慧之門的鑰匙,是一本培養(yǎng)學(xué)習(xí)方法和思維習(xí)慣的教科書。我們希望每一位讀者在學(xué)習(xí)本書的過程中,不僅能學(xué)會編程,更能學(xué)會如何思考和探索。作為編者,我們深知編寫一本好的教材何等艱難。盡管我們傾注了大量心血,仍難免存在疏漏和不足。我們真誠地希望能得到廣大讀者、教育工作者和業(yè)內(nèi)專家的批評指正,以便在后續(xù)版本中不斷完善。最后,感謝所有為本書付出努力的人。感謝朱全民、宋新波等專家的指導(dǎo)和幫助,感謝所有讀者對本書的關(guān)注和支持。希望本書能夠成為你備戰(zhàn)信息學(xué)奧林匹克競賽的良師益友,陪伴你一起迎接挑戰(zhàn),創(chuàng)造輝煌。讓我們共同在信息學(xué)的世界中探索未知,享受解決問題的樂趣,不斷前行!江 濤2024年7月
江濤,1965年出生,1986年畢業(yè)于安徽師范大學(xué)數(shù)學(xué)專業(yè)。廣東省佛山市南海區(qū)石門中學(xué)特級教師、信息學(xué)國際金牌教練。培養(yǎng)出7位IOI選手、30多位國家集訓(xùn)隊隊員,專注信息學(xué)培訓(xùn)方法研究,編寫了4本相關(guān)的著作和教材,完成2個省級課題。曾獲全國先進(jìn)工作者、全國五一勞動獎?wù)、國?wù)院政府津貼、全國信息學(xué)十杰指導(dǎo)教師等榮譽(yù)
叢書序前言第一章 C++程序設(shè)計進(jìn)階第一節(jié) 二維數(shù)組3一、情境導(dǎo)航3二、問題抽象3三、知識探究4(一) 二維數(shù)組的定義4(二) 二維數(shù)組的輸入、輸出4(三) 貪吃蛇問題5四、實踐應(yīng)用6五、總結(jié)提升9第二節(jié) 多維數(shù)組11一、情境導(dǎo)航11二、問題抽象12三、知識探究12(一) 三維數(shù)組的定義12(二) 三維數(shù)組的輸入、輸出13(三) 統(tǒng)計石頭問題13四、實踐應(yīng)用15五、總結(jié)提升19第三節(jié) 常用數(shù)學(xué)函數(shù)23一、情境導(dǎo)航23二、問題抽象23三、知識探究24(一) 絕對值函數(shù)24(二) 四舍五入函數(shù)24(三) 取下整函數(shù)(地板函數(shù))25(四) 取上整函數(shù)(天花板函數(shù))26(五) 平方根函數(shù)26(六) 常用三角函數(shù)27(七) 對數(shù)函數(shù)27(八) 冪函數(shù)28四、實踐應(yīng)用29五、總結(jié)提升31第四節(jié) 自定義函數(shù)的參數(shù)33一、情境導(dǎo)航33二、問題抽象33三、知識探究34(一) 形參和實參34(二) 參數(shù)的傳遞方式34四、實踐應(yīng)用36五、總結(jié)提升38第五節(jié) 結(jié)構(gòu)體與聯(lián)合體42一、情境導(dǎo)航42二、問題抽象43三、知識探究44(一) 結(jié)構(gòu)體的引入44(二) 結(jié)構(gòu)體的定義44(三) 創(chuàng)建結(jié)構(gòu)體變量45(四) 訪問結(jié)構(gòu)體變量的成員45(五) 初始化結(jié)構(gòu)體變量的成員45(六) 結(jié)構(gòu)體數(shù)組46(七) 結(jié)構(gòu)體作為函數(shù)參數(shù)46(八) 圖書館里的尋書游戲46四、實踐應(yīng)用48五、總結(jié)提升51第六節(jié) 指針類型60一、情境導(dǎo)航60二、問題抽象60三、知識探究61(一) 什么是指針61(二) 如何聲明指針61(三) 指針的初始化62(四) 使用指針62(五) 指針和函數(shù)63(六) 指針的算術(shù)運算63(七) 指針與數(shù)組63(八) 動態(tài)分配內(nèi)存64四、實踐應(yīng)用66五、總結(jié)提升68第七節(jié) STL(標(biāo)準(zhǔn)模板庫)——算法函數(shù)72一、情境導(dǎo)航72二、問題抽象72三、知識探究73(一) 什么是STL73(二) 算法函數(shù)max、min、swap73(三) 算法函數(shù)sort75四、實踐應(yīng)用77五、總結(jié)提升80第八節(jié) STL(標(biāo)準(zhǔn)模板庫)——線性容器85一、情境導(dǎo)航85二、問題抽象86三、知識探究87(一) STL的線性容器87(二) STL的向量(vector)87(三) 向量的成員函數(shù)89(四) STL的鏈表(list)90(五) STL的隊列(queue)92(六) STL的棧(stack)93(七) 線性容器相關(guān)函數(shù)總結(jié)95四、實踐應(yīng)用96五、總結(jié)提升98第二章 數(shù)據(jù)結(jié)構(gòu)及其運用第一節(jié) 線性結(jié)構(gòu)——鏈表103一、情境導(dǎo)航103二、問題抽象103三、知識探究104(一) 鏈表的基本概念104(二) 鏈表的分類104(三) 鏈表的操作105(四) 鏈表操作的STL list實現(xiàn)105(五) 鏈表操作的數(shù)組模擬實現(xiàn)106(六) 雙向鏈表操作的數(shù)組模擬實現(xiàn)109(七) 循環(huán)鏈表操作的數(shù)組模擬實現(xiàn)111(八) 為什么學(xué)習(xí)鏈表操作的數(shù)組模擬實現(xiàn)112四、實踐應(yīng)用112五、總結(jié)提升116第二節(jié) 線性結(jié)構(gòu)——隊列和棧116一、情境導(dǎo)航116二、問題抽象117三、知識探究117(一) 什么是隊列117(二) 隊列的基本操作117(三) 隊列操作的STL queue實現(xiàn)118(四) 隊列操作的數(shù)組實現(xiàn)119(五) 與隊列類似的棧121(六) 棧的基本操作121(七) 棧操作的STL stack實現(xiàn)121(八) 棧操作的數(shù)組實現(xiàn)122四、實踐應(yīng)用124五、總結(jié)提升130第三節(jié) 樹的引入133一、情境導(dǎo)航133二、問題抽象134三、知識探究134(一) 什么是樹134(二) 樹的表示與存儲135(三) 樹的基本操作136四、實踐應(yīng)用137五、總結(jié)提升139第四節(jié) 二叉樹141一、情境導(dǎo)航141二、問題抽象142三、知識探究142(一) 什么是二叉樹142(二) 二叉樹的性質(zhì)143(三) 二叉樹的表示與存儲143(四) 二叉樹的基本操作144四、實踐應(yīng)用144五、總結(jié)提升146第五節(jié) 二叉搜索樹150一、情境導(dǎo)航150二、問題抽象151三、知識探究151(一) 什么是二叉搜索樹151(二) 二叉搜索樹的插入操作152(三) 二叉搜索樹的查找操作153(四) 二叉搜索樹的遍歷操作154四、實踐應(yīng)用155五、總結(jié)提升157第六節(jié) 哈夫曼樹160一、情境導(dǎo)航160二、問題抽象160三、知識探究161(一) 什么是哈夫曼樹161(二) 構(gòu)建哈夫曼樹161(三) 哈夫曼樹的性質(zhì)162(四) 哈夫曼編碼162(五) 哈夫曼編碼的實現(xiàn)163四、實踐應(yīng)用166五、總結(jié)提升169第七節(jié) 完全二叉樹170一、情境導(dǎo)航170二、問題抽象170三、知識探究171(一) 什么是完全二叉樹171(二) 完全二叉樹的平衡性質(zhì)171(三) 完全二叉樹的數(shù)組實現(xiàn)171(四) 什么是堆173(五) 堆的操作173四、實踐應(yīng)用175五、總結(jié)提升177第八節(jié) 圖的定義和存儲181一、情境導(dǎo)航181二、問題抽象182三、知識探究183(一) 什么是圖183(二) 圖的性質(zhì)183(三) 什么是圖的鄰接矩陣184(四) 圖的鄰接矩陣的實現(xiàn)185(五) 圖的鄰接矩陣的優(yōu)缺點186(六) 圖的鄰接鏈表186(七) 圖的鄰接鏈表的實現(xiàn)187(八) 圖的鄰接鏈表的優(yōu)缺點188四、實踐應(yīng)用188五、總結(jié)提升190第三章 算法設(shè)計第一節(jié) 算法基礎(chǔ)195一、算法概述195(一) 算法的定義195(二) 算法的特性195二、算法的描述195(一) 自然語言描述195(二) 流程圖描述196(三) 偽代碼描述197(四) 三種描述方式的比較197第二節(jié) 基礎(chǔ)算法1——貪心法198一、情境導(dǎo)航198二、問題抽象198三、知識探究199(一) 貪心法的定義與原理199(二) 貪心法的適用場景199(三) 分發(fā)餅干問題199四、實踐應(yīng)用201五、總結(jié)提升206第三節(jié) 基礎(chǔ)算法2——遞推法208一、情境導(dǎo)航208二、問題抽象209三、知識探究209(一) 遞推法的基本步驟209(二) 遞推法的適用場景210四、實踐應(yīng)用210五、總結(jié)提升213第四節(jié) 基礎(chǔ)算法3——遞歸法214一、情境導(dǎo)航214二、問題抽象215三、知識探究216(一) 什么是遞歸法216(二) 斐波那契數(shù)列的遞歸法描述216(三) 遞歸法的優(yōu)點216四、實踐應(yīng)用217五、總結(jié)提升221第五節(jié) 基礎(chǔ)算法4——二分法222一、情境導(dǎo)航222二、問題抽象223三、知識探究223(一) 二分法原理223(二) 二分法的基本步驟223四、實踐應(yīng)用225五、總結(jié)提升229第六節(jié) 基礎(chǔ)算法5——倍增法233一、情境導(dǎo)航233二、問題抽象233三、知識探究234四、實踐應(yīng)用236五、總結(jié)提升238第七節(jié) 基礎(chǔ)算法6——前綴和245一、情境導(dǎo)航245二、問題抽象245三、知識探究245(一) 前綴和的定義與優(yōu)勢245(二) 前綴和的適用場景246(三) 用前綴和解決倉庫統(tǒng)計問題246四、實踐應(yīng)用248五、總結(jié)提升250(一) 注意事項250(二) 算法復(fù)雜度250(三) 前綴和的優(yōu)缺點250第八節(jié) 數(shù)值處理算法256一、情境導(dǎo)航256二、問題抽象257三、知識探究257(一) 高精度加法257(二) 高精度減法259(三) 高精度乘法262四、實踐應(yīng)用264五、總結(jié)提升265第九節(jié) 排序算法269一、情境導(dǎo)航269二、問題抽象270三、知識探究271(一) 冒泡排序271(二) 選擇排序273(三) 插入排序275四、實踐應(yīng)用276五、總結(jié)提升278第十節(jié) 搜索算法281一、情境導(dǎo)航281二、問題抽象282三、知識探究282(一) 深度優(yōu)先搜索282(二) 廣度優(yōu)先搜索287四、實踐應(yīng)用290五、總結(jié)提升292第十一節(jié) 圖論算法298一、情境導(dǎo)航298二、問題抽象299三、知識探究299(一) 圖的深度優(yōu)先搜索299(二) 圖的廣度優(yōu)先搜索303四、實踐應(yīng)用305五、總結(jié)提升308第十二節(jié) 動態(tài)規(guī)劃1——簡單一維動態(tài)規(guī)劃312一、情境導(dǎo)航312二、問題抽象312三、知識探究313(一) 動態(tài)規(guī)劃概述315(二) 動態(tài)規(guī)劃的原理315四、實踐應(yīng)用317五、總結(jié)提升320第十三節(jié) 動態(tài)規(guī)劃2——簡單背包類型動態(tài)規(guī)劃321一、情境導(dǎo)航321二、問題抽象322三、知識探究329四、實踐應(yīng)用331五、總結(jié)提升334ⅩⅦⅩⅧ第十四節(jié) 動態(tài)規(guī)劃3——簡單區(qū)間類型動態(tài)規(guī)劃335一、情境導(dǎo)航335二、問題抽象336三、知識探究337四、實踐應(yīng)用340五、總結(jié)提升344第四章 數(shù)學(xué)運用第一節(jié) 初等數(shù)論351一、情境導(dǎo)航351二、問題抽象351三、知識探究352(一) 整除352(二) 因數(shù)(因子)352(三) 倍數(shù)352(四) 指數(shù)352(五) 質(zhì)數(shù)與合數(shù)352(六) 整數(shù)唯一分解定理352四、實踐應(yīng)用357五、總結(jié)提升363第二節(jié) 組合數(shù)學(xué)368一、情境導(dǎo)航368二、問題抽象369三、知識探究369(一) 加法原理與乘法原理369(二) 排列與組合370四、實踐應(yīng)用371五、總結(jié)提升374附錄 本書內(nèi)容與NOI競賽大綱的對應(yīng)關(guān)系379