第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 ZOJ1004-Anagramsby Stack
2.9 ZOJ1094-Matrix Chain Multiplication
2.10 ZOJ1011-NTA
2.11 ZOJ1062-Trees Madeto Order
2.12 ZOJ1097-Codethe Tree
2.13 ZOJ1156-Unscrambling Images
2.14 ZOJ1167-Trees on the Level
2.15 ZOJ1016-Parencodings
2.16 ZOJ1944-Tree Recovery
2.17 ZOJ2104-Letthe Balloon Rise
上机练习题
第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.10 取余运算
3.3 Big String
上机练习题
第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 ZOJ1013-Great Equipment
4.9 ZOJ1027-Human Gene Functions
4.10 ZOJ1074-Tothe Max
4.11 ZOJ1093-Monkeyand Banana
4.12 ZOJ1100-Mondriaans Dream
4.13 ZOJ1102-Phylogenetic Trees Inherited
4.14 ZOJ1107-Fat Mouseand Cheese
4.15 ZOJ1108-Fat Mouses Speed
4.16 ZOJ1132-Railroad
4.17 ZOJ1147-Formatting Text
4.18 ZOJ1149-Dividing
4.19 ZOJ1163-The Staircases
4.20 ZOJ1183-Scheduling Lectures
4.21 ZOJ1196-Fast Food
4.22 ZOJ1206-Winthe Bonus
4.23 ZOJ1227-Free Candies
4.24 ZOJ1234-Chopsticks
上机练习题
第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 Wooden Sticks
5.11 ZOJ1029 Moving Tables
5.12 ZOJ1076 Gene Assembly
5.13 ZOJ1161 Gone Fishing
5.14 ZOJ1171 Sortingthe Photos
5.15 ZOJ2109 Fat Mouse 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 ZOJ1145-Dreisam Equations
6.10 ZOJ1157-A Plug for UNIX
6.11 ZOJ1166-Anagram Checker
6.12 ZOJ1213-Lumber Cutting
上机练习题
第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 ZOJ1136-Multiple
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.10 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
上机练习题
参考文献