第1章 环境搭建
1.1 Microsoft Visual C++2010学习版的使用
1.1.1 Visual C++2010学习版的安装
1.1.2 创建、编辑、编译和运行项目
1.1.3 为什么缺少很多选项
1.1.4 为什么一闪而过
1.1.5 其他配置选项
1.2 Code::Blocks的使用
1.2.1 安装Code::Blocks
1.2.2 创建项目和编辑源代码
1.2.3 调试
第2章 排序算法
2.1 冒泡排序
2.1.1 冒泡排序的基本思想
2.1.2 冒泡排序过程分析
2.1.3 冒泡排序代码分析
2.2 选择排序
2.2.1 选择排序的基本思想
2.2.2 选择排序过程分析
2.2.3 选择排序代码分析
2.3 插入排序
2.3.1 插入排序的基本思想
2.3.2 插入排序过程分析
2.3.3 插入排序代码分析
2.4 计数排序
2.4.1 计数排序的基本思想
2.4.2 计数排序过程分析
2.4.3 计数排序代码分析
2.4.4 统计句子中字母出现的次数
算法设计练习
第3章 递归算法
3.1 汉诺塔问题
3.1.1 汉诺塔问题解题思路分析
3.1.2 汉诺塔问题代码分析
3.2 全排列问题
3.2.1 无重复元素的全排列
3.2.2 有重复元素的全排列
3.3 因数分解问题
3.3.1 因子递增方式递归求解
3.3.2 子问题分解方式递归求解
3.3.3 因数分解问题代码分析
3.4 分形图形
3.4.1 盒分形思路分析
3.4.2 盒分形代码分析
算法设计练习
第4章 数论基础
4.1 余数和最大公约数
4.1.1 余数
4.1.2 最大公约数
4.1.3 欧几里得算法
4.2 素数问题
4.2.1 素数的概念
4.2.2 素数相关的定理
4.2.3 筛选法求素数
4.3 同余问题
4.3.1 同余及其性质
4.3.2 线性同余
算法设计练习
第5章 组合数学基础
5.1 排列生成算法
5.1.1 序数生成法
5.1.2 字典序生成法
5.1.3 “火星人”问题
5.2 组合生成算法
5.2.1 基于字典序的组合生成算法
5.2.2 基于格雷码的组合生成算法
算法设计练习
第6章 贪心算法
6.1 结构体
6.2 贪心算法概述
6.3 活动时间安排
6.3.1 活动安排过程分析
6.3.2 活动安排代码分析
6.4 最优装载问题
6.4.1 最优装载问题过程分析
6.4.2 最优装载问题代码分析
6.5 可切割背包问题
6.5.1 可切割背包问题分析
6.5.2 可切割背包代码分析
6.6 删数问题
6.7 操作系统内存分配
6.7.1 First Fit内存分配
6.7.2 Best Fit内存分配
6.7.3 Worst Fit内存分配
算法设计练习
第7章 分治算法
7.1 快速排序
7.1.1 快速排序过程分析
7.1.2 快速排序代码分析
7.2 归并排序
7.2.1 归并排序过程分析
7.2.2 归并排序代码分析
7.3 二分查找
7.3.1 二分查找问题过程分析
7.3.2 二分查找代码分析
7.4 循环赛
7.4.1 2k循环赛日程表
7.4.2 奇偶循环赛日程表
7.5 大整数乘法
7.5.1 大整数乘法过程分析
7.5.2 大整数乘法代码分析
算法设计练习
第8章 动态规划算法
8.1 数字三角形
8.1.1 使用朴素递归求解数字三角形问题
8.1.2 使用动态规划算法求解数字三角形问题
8.2 最长公共子序列
8.2.1 最长公共子序列问题过程分析
8.2.2 最长公共子序列问题代码分析
8.3 编辑距离
8.3.1 编辑距离的正向生成
8.3.2 操作序列的逆向回溯
8.4 0-1背包问题(一)
8.4.1 0-1背包问题过程分析
8.4.2 0-1背包问题代码分析
8.5 石子合并
8.5.1 石子合并问题过程分析
8.5.2 石子合并问题代码分析
算法设计练习
第9章 回溯算法
9.1 八皇后问题
9.1.1 八皇后问题过程分析
9.1.2 八皇后问题代码分析
9.2 子集和问题
9.2.1 子集和问题过程分析
9.2.2 子集和问题代码分析
9.3 0-1背包问题(二)
9.3.1 0-1背包问题过程分析
9.3.2 0-1背包问题代码分析
9.4 装载问题
9.4.1 装载问题过程分析
9.4.2 装载问题代码分析
9.5 任务分配问题
9.5.1 任务分配问题过程分析
9.5.2 任务分配问题代码分析
算法设计练习
参考文献
展开