第1章 算法概述
1.1 引言
1.1.1 算法的描述
1.1.2 算法的設計
1.2 算法的復雜性
1.2.1 時間復雜性
1.2.2 空間復雜性
1.3 大學生程序設計競賽概述
1.4 程序設計在綫測試題庫
第2章 數據結構和標準模闆庫
2.1 棧
2.2 嚮量
2.3 映射
2.4 列錶
2.5 集閤
2.6 隊列
2.7 優先隊列
2.8 ZOJ1004AnagramsbyStack
2.9 ZOJ1094MatrixChainMultiplication
2.1 0ZOJ1011NTA
2.1 1ZOJ1062TreesMadetoOrder
2.1 2ZOJ1097CodetheTree
2.1 3ZOJ1156UnscramblingImages
2.1 4ZOJ1167TreesontheLevel
2.1 5ZOJ1016Parencodings
2.1 6ZOJ1944TreeRecovery
2.1 7ZOJ2104LettheBalloonRise
上機練習題
第3章 遞歸與分治策略
3.1 遞歸算法
3.1.1 Fibonacci數列
3.1.2 集閤的全排列問題
3.1.3 整數劃分問題
3.2 分治策略
3.2.1 分治法的基本步驟
3.2.2 分治法的適用條件
3.2.3 二分搜索技術
3.2.4 循環賽日程錶
3.2.5 棋盤覆蓋問題
3.2.6 選擇問題
3.2.7 輸油管道問題
3.2.8 半數集問題
3.2.9 整數因子分解
3.2.1 0取餘運算
3.3 BigString
上機練習題
第4章 動態規劃
4.1 矩陣連乘積問題
4.1.1 分析最優解的結構
4.1.2 建立遞歸關係
4.1.3 計算最優值
4.1.4 構造最優解
4.2 動態規劃算法的基本要素
4.2.1 最優子結構
4.2.2 重疊子問題
4.2.3 備忘錄方法
4.3 最長公共子序列
4.3.1 最長公共子序列的結構
4.3.2 子問題的遞歸結構
4.3.3 計算最優值
4.3.4 構造最長公共子序列
4.4 最大子段和
4.5 01背包問題
4.5.1 遞歸關係分析
4.5.2 算法實現
4.6 最長單調遞增子序列
4.7 數字三角形問題
4.8 ZOJ1013GreatEquipment
4.9 ZOJ1027HumanGeneFunctions
4.1 0ZOJ1074TotheMax
4.1 1ZOJ1093MonkeyandBanana
4.1 2ZOJ1100MondriaansDream
4.1 3ZOJ1102PhylogeneticTreesInherited
4.1 4ZOJ1107FatMouseandCheese
4.1 5ZOJ1108FatMousesSpeed
4.1 6ZOJ1132Railroad
4.1 7ZOJ1147FormattingText
4.1 8ZOJ1149Dividing
4.1 9ZOJ1163TheStaircases
4.2 0ZOJ1183SchedulingLectures
4.2 1ZOJ1196FastFood
4.2 2ZOJ1206WintheBonus
4.2 3ZOJ1227FreeCandies
4.2 4ZOJ1234Chopsticks
上機練習題
第5章 貪心算法
5.1 活動安排問題
5.2 貪心算法的理論基礎
5.2.1 貪心選擇性質
5.2.2 最優子結構性質
5.2.3 貪心算法的求解過程
5.3 背包問題
5.4 最優裝載問題
5.5 單源最短路徑
5.6 最小生成樹
5.6.1 最小生成樹的性質
5.6.2 Prim算法
5.6.3 Kruskal算法
5.7 刪數問題
5.7.1 問題的貪心選擇性質
5.7.2 問題的最優子結構性質
5.8 多處最優服務次序問題
5.8.1 問題的貪心選擇性質
5.8.2 問題的最優子結構性質
5.9 ZOJ1012 Mainframe
5.10 ZOJ1025 WoodenSticks
5.11 ZOJ1029 MovingTables
5.12 ZOJ1076 GeneAssembly
5.13 ZOJ1161 GoneFishing
5.14 ZOJ1171 SortingthePhotos
5.15 ZOJ2109 FatMouse Trade
上機練習題
第6章 迴溯算法
6.1 迴溯算法的理論基礎
6.1.1 問題的解空間
6.1.2 迴溯法的基本思想
6.1.3 子集樹與排列樹
6.2 裝載問題
6.3 01背包問題
6.4 圖的m著色問題
6.5 n皇後問題
6.6 旅行商問題
6.7 流水作業調度問題
6.8 子集和問題
6.9 ZOJ1145DreisamEquations
6.1 0ZOJ1157APlugforUNIX
6.1 1ZOJ1166AnagramChecker
6.1 2ZOJ1213LumberCutting
上機練習題
第7章 分支限界算法
7.1 分支限界算法的基本理論
7.1.1 分支限界算法策略
7.1.2 分支結點的選擇
7.1.3 提高分支限界算法的效率
7.1.4 限界函數
7.2 單源最短路徑問題
7.3 裝載問題
7.4 01背包問題
7.5 旅行商問題
7.6 ZOJ1136Multiple
7.7 迴溯算法與分支限界算法的比較上機練習題
第8章 圖的搜索算法
8.1 圖的深度優先搜索遍曆
8.2 ZOJ1002 FireNet
8.3 ZOJ1008 GnomeTetravex
8.4 ZOJ1047 ImagePerimeters
8.5 ZOJ1084 ChannelAllocation
8.6 ZOJ1142 Maze
8.7 ZOJ1190 OptimalPrograms
8.8 ZOJ1191 TheDieIsCast
8.9 ZOJ1204 AdditiveEquations
8.1 0 ZOJ1245 Triangles
8.11 ZOJ2100 Seeding
8.12 圖的廣度優先搜索遍曆
8.13 ZOJ1055 Oh,ThoseAchinFeet
8.14 ZOJ1079 RoboticJigsaw
8.15 ZOJ1085 AlienSecurity
8.16 ZOJ1103 HikeonaGraph
8.17 ZOJ1148 TheGame
8.18 ZOJ1217 Eight
8.19 ZOJ1091 KnightMoves
上機練習題
參考文獻
· · · · · · (
收起)