算法設(shè)計(jì)編程實(shí)驗(yàn)(第2版)
定 價(jià):119 元
- 作者:吳永輝,王建德編著
- 出版時(shí)間:2020/3/1
- ISBN:9787111645818
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP301.6
- 頁碼:544
- 紙張:膠版紙
- 版次:2
- 開本:16K
本書從ACM-ICPC程序設(shè)計(jì)競賽等各種程序設(shè)計(jì)競賽的試題進(jìn)行了分析和整理,并精選出典型試題進(jìn)行分類解析,既可用于高校算法、程序設(shè)計(jì)課程的實(shí)驗(yàn)和教學(xué),也可以用于競賽選手的系統(tǒng)訓(xùn)練。
本書是“大學(xué)程序設(shè)計(jì)課程與競賽訓(xùn)練教材”系列著作中的第2部。我們編著這一系列著作的指導(dǎo)思想如下。
。1)程序設(shè)計(jì)競賽是“通過編程解決問題”的競賽。國際大學(xué)生程序設(shè)計(jì)競賽(International Collegiate Programming Contest,ICPC)和中學(xué)生國際信息學(xué)奧賽(International Olympiad in Informatics,IOI)在20世紀(jì)80年代中后期走向成熟,30多年來,累積了海量的試題。這些來自全球各地、凝聚了無數(shù)命題者的心血和智慧的試題,不僅可以用于程序設(shè)計(jì)競賽選手的訓(xùn)練,而且可以用于教學(xué),以系統(tǒng)、全面地提高學(xué)生編程解決問題的能力。
。2)我們認(rèn)為,評價(jià)一個(gè)人的專業(yè)能力,要看這個(gè)人的兩個(gè)方面:1)知識體系,即他能用哪些知識去解決問題,或者說,他所真正掌握并能應(yīng)用的知識,而不僅僅是他學(xué)過的知識;2)思維方式,即他在面對問題(特別是不太標(biāo)準(zhǔn)化的問題)的時(shí)候,解決問題的策略是什么?對于程序設(shè)計(jì)競賽選手所要求的知識體系,可以概括為1984年圖靈獎得主Niklaus Wirth提出的著名公式“算法+數(shù)據(jù)結(jié)構(gòu)=程序”,這也是計(jì)算機(jī)學(xué)科知識體系的核心部分,因此本系列的前兩部著作分別是《數(shù)據(jù)結(jié)構(gòu)編程實(shí)驗(yàn)》和《算法設(shè)計(jì)編程實(shí)驗(yàn)》。對于需要采用某些策略進(jìn)行求解的程序設(shè)計(jì)試題,比如,不采用常用的數(shù)據(jù)結(jié)構(gòu)或者需要優(yōu)化解題的算法,我們進(jìn)行分析整理,編寫了本系列的第3部著作《程序設(shè)計(jì)解題策略》。
。3)從本質(zhì)上說,程序設(shè)計(jì)是技術(shù),所以,首先牢記學(xué)習(xí)編程要不斷“Practice,Practice,Practice”!本系列選用程序設(shè)計(jì)競賽的大量試題,以案例教學(xué)的方式進(jìn)行教學(xué)實(shí)驗(yàn)并安排學(xué)生進(jìn)行解題訓(xùn)練。其次,“Practice in a systematic way”。本系列的編寫基于傳統(tǒng)的教學(xué)大綱,以系統(tǒng)、全面地提高學(xué)生編程解決問題的能力為目標(biāo),以程序設(shè)計(jì)競賽的試題及詳細(xì)的解析、帶注釋的程序作為實(shí)驗(yàn),在每一章的結(jié)束部分給出相關(guān)題庫及解題提示,并對大部分試題給出官方的測試數(shù)據(jù)。
2013年,我們在機(jī)械工業(yè)出版社出版了《算法設(shè)計(jì)編程實(shí)驗(yàn):大學(xué)程序設(shè)計(jì)課程與競賽訓(xùn)練教材》。2018年,我們在CRCPress出版了該書的英文版《Algorithm Design Practice: for Collegiate Programming Contest and Education》。此外,我們還在中國臺灣地區(qū)出版了繁體中文版。
吳永輝,博士,復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院副教授,美國石溪大學(xué)訪問學(xué)者,ICPC亞洲程序設(shè)計(jì)競賽首訓(xùn)練委員會主席。他曾率隊(duì)在ICPC世界總決賽上獲得三枚獎牌,并應(yīng)邀在阿曼、孟加拉國、馬來西亞、美國的多所高校長期講學(xué)。
王建德,信息學(xué)奧林匹克競賽教練,國務(wù)院特殊津貼專家,中學(xué)特級教9幣。他所輔導(dǎo)的學(xué)生曾在國際信息學(xué)競賽(IOI)中獲得7金、3銀、2銅的優(yōu)異成績。他先后出版了24本關(guān)于程序設(shè)計(jì)和算法的學(xué)術(shù)專著。
前言
第1章 求解AdHoc類問題的編程實(shí)驗(yàn)
1.1 機(jī)理分析法的實(shí)驗(yàn)范例
1.2 統(tǒng)計(jì)分析法的實(shí)驗(yàn)范例
1.3 相關(guān)題庫
第2章 模擬法的編程實(shí)驗(yàn)
2.1 直敘式模擬的實(shí)驗(yàn)范例
2.2 篩選法模擬的實(shí)驗(yàn)范例
2.3 構(gòu)造法模擬的實(shí)驗(yàn)范例
2.4 相關(guān)題庫
第3章 數(shù)論的編程實(shí)驗(yàn)
3.1 素?cái)?shù)運(yùn)算的實(shí)驗(yàn)范例
3.1.1 使用篩法生成素?cái)?shù)
3.1.2 測試大素?cái)?shù)
3.2 求解不定方程和同余的實(shí)驗(yàn)范例
3.2.1 計(jì)算最大公約數(shù)和不定方程
3.2.2 計(jì)算同余方程和同余方程組
3.2.3 計(jì)算多項(xiàng)式同余方程
3.3 特殊的同余式的實(shí)驗(yàn)范例
3.3.1 威爾遜定理和費(fèi)馬小定理
3.3.2 偽素?cái)?shù)
3.3.3 歐拉定理
3.4 積性函數(shù)的實(shí)驗(yàn)范例
3.4.1 歐拉φ函數(shù)φ(n)
3.4.2 莫比鳥斯函數(shù)μ(n)
3.4.3 完全數(shù)和梅森素?cái)?shù)
3.5 高斯素?cái)?shù)的實(shí)驗(yàn)范例
3.6 相關(guān)題庫
第4章 組合分析的編程實(shí)驗(yàn)
4.1 生成排列的實(shí)驗(yàn)范例
4.1.1 按字典序思想生成下一個(gè)排列
4.1.2 按字典序思想生成所有排列
4.2 排列組合計(jì)數(shù)的實(shí)驗(yàn)范例
4.2.1 一般的排列組合計(jì)數(shù)公式
4.2.2 兩種特殊的排列組合計(jì)數(shù)公式
4.2.3 多重集的排列數(shù)和組合數(shù)
4.3 鴿籠原理與容斥原理的實(shí)驗(yàn)范例
4.3.1 利用鴿籠原理求解存在性問題
4.3.2 容斥原理應(yīng)用實(shí)驗(yàn)
4.3.3 Ramsey定理的應(yīng)用
4.4 Polya計(jì)數(shù)公式的實(shí)驗(yàn)范例
4.5 生成函數(shù)與遞推關(guān)系的實(shí)驗(yàn)范例
4.5.1 冪級數(shù)型生成函數(shù)
4.5.2 指數(shù)型生成函數(shù)
4.5.3 遞推關(guān)系
4.6 快速傅里葉變換的實(shí)驗(yàn)范例
4.7 相關(guān)題庫
第5章 貪心法的編程實(shí)驗(yàn)
5.1 體驗(yàn)貪心法內(nèi)涵的實(shí)驗(yàn)范例
5.1.1 貪心法的經(jīng)典問題
5.1.2 體驗(yàn)貪心法內(nèi)涵
5.2 利用數(shù)據(jù)有序化進(jìn)行貪心選擇的實(shí)驗(yàn)范例
5.3 在綜合性的P類問題中使用貪心法的實(shí)驗(yàn)范例
5.4 相關(guān)題庫
第6章 動態(tài)規(guī)劃方法的編程實(shí)驗(yàn)
6.1 線性DP的實(shí)驗(yàn)范例
6.1.1 初步體驗(yàn)線性DP問題
6.1.2 子集和問題
6.1.3 最長公共子序列問題
6.1.4 最長遞增子序列問題
6.2.1 背包問題
6.2.1 基本的0-1背包問題
6.2.2 完全背包
6.2.3 多重背包
6.2.4 混合背包
6.2.5 二維背包
6.2.6 分組背包
6.2.7 有依賴的背包
6.3 樹形DP的實(shí)驗(yàn)范例
6.4 狀態(tài)壓縮DP的實(shí)驗(yàn)范例
6.5 單調(diào)優(yōu)化1D/1DDP的實(shí)驗(yàn)范例
6.5.1 經(jīng)典模型1:利用決策代價(jià)函數(shù)w的單調(diào)性優(yōu)化
6.5.2 經(jīng)典模型2:利用決策區(qū)間下界的單調(diào)性優(yōu)化
6.5.3 經(jīng)典模型3:利用最優(yōu)決策點(diǎn)的凸性優(yōu)化
6.6 相關(guān)題庫
第7章 高級數(shù)據(jù)結(jié)構(gòu)的編程實(shí)驗(yàn)
7.1 后綴數(shù)組的實(shí)驗(yàn)范例
7.1.1 使用倍增算法計(jì)算名次數(shù)組和后綴數(shù)組
7.1.2 計(jì)算最長公共前綴
7.1.3 后綴數(shù)組的應(yīng)用
7.2 線段樹的實(shí)驗(yàn)范例
7.2.1 線段樹的基本概念和基本操作
7.2.2 線段樹單點(diǎn)更新的維護(hù)
7.2.3 線段樹子區(qū)間更新的維護(hù)
7.3 處理特殊圖的實(shí)驗(yàn)范例
7.3.1 計(jì)算歐拉圖
7.3.2 計(jì)算哈密頓圖
7.3.3 計(jì)算最大獨(dú)立集
7.3.4 計(jì)算割點(diǎn)、橋和雙連通分支
7.4 相關(guān)題庫
第8章 計(jì)算幾何的編程實(shí)驗(yàn)
8.1 點(diǎn)線面運(yùn)算的實(shí)驗(yàn)范例
8.1.1 計(jì)算點(diǎn)積和叉積
8.1.2 計(jì)算線段交
8.1.3 利用歐拉公式計(jì)算多面體
8.2 利用掃描線算法計(jì)算矩形的并的面積的實(shí)驗(yàn)范例
8.2.1 沿垂直方向計(jì)算矩形的并面積
8.2.2 沿水平方向計(jì)算矩形的并面積
8.3 計(jì)算半平面交的實(shí)驗(yàn)范例
8.3.1 計(jì)算半平面交的聯(lián)機(jī)算法
8.3.2 利用極角計(jì)算半平面交的算法
8.4 計(jì)算凸包和旋轉(zhuǎn)卡殼的實(shí)驗(yàn)范例
8.4.1 計(jì)算凸包
8.4.2 旋轉(zhuǎn)卡殼實(shí)驗(yàn)
8.5 相關(guān)題庫