本書主要介紹程序設(shè)計算法的基礎(chǔ)知識,通過算法問題實踐講解程序設(shè)計常用的算法,包括題目描述、題目分析,并給出參考代碼。本書可以作為基礎(chǔ)語言(C、C++)的后續(xù)內(nèi)容,用于鞏固和提高數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識,此外,亦可為軟件工程、應(yīng)用程序開發(fā)、網(wǎng)絡(luò)信息技術(shù)、大數(shù)據(jù)和人工智能等提供算法知識基礎(chǔ)。
本書可作為普通高等學(xué)校計算機及工科專業(yè)教材或從事軟件程序設(shè)計人員的參考書,也可作為大學(xué)生程序設(shè)計競賽的訓(xùn)練指導(dǎo)書。
更多科學(xué)出版社服務(wù),請掃碼獲取。
第1章 程序設(shè)計算法概述
1.1 算法實現(xiàn)過程
1.2 算法的特征及評價標準
1.3 算法分析
1.4 算法實踐
第2章 基礎(chǔ)算法
2.1 枚舉法
2.1.1 生理周期(Biorhythms/1006)
2.1.2 立方體(Blocks/2363)
2.1.3 完美立方(Perfect Cubes/1543)
2.1.4 千年蟲病毒(Y2K Accounting Bug/2586)
2.1.5 保險箱(Safecracker/1248)
2.1.6 裝盒問題(Packets/1017)
2.2 遞歸法
2.2.1 遞歸函數(shù)(Function Run Fun/1579)
2.2.2 還原二叉樹(Tree Recovery/2255)
2.2.3 分形(Fractal/2083)
2.2.4 放蘋果(1664)
2.2.5 排列問題(Orders/1731)
2.3 分治法
2.3.1 誰在中間(Who's in the Middle/2388)
2.3.2 排序問題(Ultra-QuickSort/2299)
2.3.3 好斗的牛(Aggressive cows/2456)
2.3.4 分餡餅(Pie/3122)
2.3.5 木桿的膨脹(ExpandingRods/1905)
2.3.6 星形還是樹形(A Star not a Tree?/2420)
第3章 基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)
3.1 堆棧
3.1.1 網(wǎng)站導(dǎo)航(Web Navigation/1028)
3.1.2 糟糕的一天(Bad Hair Day/3250)
3.1.3 鐵軌問題(Rails/1363)
3.1.4 可怕的集合(Terrible Sets/2082)
3.1.5 數(shù)字密碼(Code/1780)
3.2 隊列
3.2.1 紙牌戲法(Card Trick/3032)
3.2.2 紙牌發(fā)牌(Card Stacking/3629)
3.2.3 打印隊列(Printer Queue/3125)
3.2.4 成組隊列(Team Queue/2259)
3.2.5 滑動窗口(Sliding Window/2823)
3.3 堆
3.3.1 修理柵欄(Fence Repair/3253)
3.3.2 數(shù)據(jù)流管理系統(tǒng)(Argus/2051)
3.3.3 黑盒問題(BlackBox/1442)
3.3.4 序列問題(Sequence/2442)
3.3.5 財務(wù)補助(Moo University-Financial Aid/2010)
第4章 動態(tài)規(guī)劃
4.1 基礎(chǔ)動態(tài)規(guī)劃問題
4.1.1 數(shù)學(xué)三角形(The Triangle/1163/3176)
4.1.2 括號序列(Brackets/2955)
4.1.3 乘法問題(Multiplication Puzzle/1651)
4.1.4 接蘋果(Apple Catching/2385)
4.1.5 海明數(shù)(Hamming Problem/2545)
4.2 子序列問題
4.2.1 最長有序子序列(Longest Ordered Subsequence/2533)
4.2.2 加工木棍(Wooden Sticks/1065)
4.2.3 士兵列隊(Alignment/1836)
4.2.4 求最大和(Maximum surn/2479)
4.2.5 求最大矩陣和(To the Max/1050)
4.3 最長公共子串問題
4.3.1 公共子序列(Common Subsequence/1458)
4.3.2 回文串(Palindrome/1159)
4.3.3 基因功能(Human Gene Functions/1080)
4.3.4 基因重組(AGTC/3356)
4.4 背包問題
4.4.1 幸運手鏈(Charm Bracelet/3624)
4.4.2 儲錢罐(Piggy-Bank/1384)
4.4.3 提款機(Cash Machine/1276)
4.4.4 硬幣組合(Coins/1742)
4.5 進階動態(tài)規(guī)劃問題
4.5.1 策略游戲(Strategic game/1463)
4.5.2 周年紀念聚會(Anniversary party/2342)
4.5.3 玉米田(Corn Fields/3254)
4.5.4 送比薩(Hie with the Pie/3311)
4.5.5 頻率值(Frequent values/3368)
第5章 貪心算法
5.1 基礎(chǔ)貪心算法問題
5.1.1 生物碰撞(Stripies/1862)
5.1.2 保護花朵(Protecting the Flowers/3262)
5.1.3 田忌賽馬(Tian Ji——The Horse Racing/2287)
5.1.4 發(fā)補助(Allowance/3040)
5.1.5 超級星星(Super Star/2069)
5.2 區(qū)間覆蓋問題
5.2.1 不相交區(qū)間(Intervals/1089)
5.2.2 雷達安裝(Radar Installation/1328)
5.2.3 換班問題(Cleaning Shifts/2376)
第6章 高級數(shù)據(jù)結(jié)構(gòu)
6.1 并查集
6.1.1 宗教信仰(Ubiquitous Religions/2524)
6.1.2 傳染病(The Suspects/1611)
6.1.3 犯罪幫派(Findthem,Catchthem/1703)
6.1.4 堆放立方塊(Cube Stacking/1988)
6.2 線段樹
6.2.1 亂套的牛(Lost Cows/2182)
6.2.2 平衡陣容(BalancedLineup/3264)
6.2.3 市長的海報(Mayor's posters/2528)
6.2.4 簡單整數(shù)問題(A Simole Problem with Integers/3468)
6.3 樹狀數(shù)組
6.3.1 星星數(shù)量(Stars/2352)
6.3.2 矩陣查詢(Matrix/2155)
6.3.3 狂歡節(jié)(MooFest/1990)
6.3.4 第K小數(shù)(K-th Number/2104)
6.4 二叉搜索樹
6.4.1 闊葉樹種(Hardwood Species/2418)
6.4.2 雙重隊列(Double Queue/3481)
6.4.3 喂小狗(Feed the dogs/2761)
6.5 哈希表
6.5.1 寶貝魚(Babelfish/2503)
6.5.2 雪花(Snowflake/3349)
6.5.3 求和為零(4 Values whose Sum is 0/2785)
6.6 字符串
6.6.1 熵編碼(Entropy/1521)
6.6.2 最短前綴(Shorter Prefixes/2001)