第1章 排列与组合 1
1.1 加法原理与乘法原理 1
1.2 排列 4
1.2.1 线排列 4
1.2.2 圆排列 6
1.2.3 重排列 7
1.3 组合 9
1.3.1 单组合 9
1.3.2 重组合 10
1.4 排列和组合的生成算法 12
1.4.1 生成排列的字典序算法 13
1.4.2 生成组合的字典序算法 15
1.5 n!的近似计算与Stirling公式 16
1.6 例题讲解 18
习题一 23
第2章 二项式系数 26
2.1 二项式定理 26
2.1.1 二项式定理 26
2.1.2 常用的组合恒等式及应用 27
2.2 二项式系数的基本性质 32
2.3 多项式定理 34
2.4 牛顿二项式定理 36
2.5 二项式反演公式 37
2.6 例题讲解 38
习题二 41
第3章 容斥原理及应用 43
3.1 容斥原理 43
3.2 广义容斥原理 47
3.3 容斥原理的应用 51
3.3.1 错排问题 51
3.3.2 错排问题的推广 53
3.3.3 有限制的排列 54
3.3.4 棋盘多项式 57
3.3.5 有禁区的排列 60
3.4 例题讲解 62
习题三 68
第4章 递推关系 70
4.1 递推关系的建立 70
4.2 递推关系的求解方法 73
4.2.1 常系数线性齐次递推关系的求解 73
4.2.2 常系数线性非齐次递推关系的求解 78
4.3 Fibonacci数和Catalan数 80
4.3.1 Fibonacci数 80
4.3.2 Catalan数 84
4.4 例题讲解 89
习题四 93
第5章 生成函数 95
5.1 生成函数的定义 95
5.2 生成函数的性质 98
5.3 生成函数在计数中的应用 104
5.3.1 正整数的拆分与拆分数的生成函数 104
5.3.2 指数型生成函数 108
5.3.3 集合的划分与第二类Stirling数 111
5.3.4 分配问题的生成函数 114
5.4 用生成函数求解递推关系 117
5.5 例题讲解 121
习题五 125
第6章 鸽巢原理与Ramsey定理 127
6.1 鸽巢原理 127
6.2 鸽巢原理的推广形式 128
6.3 Ramsey数与Ramsey定理 131
6.4 例题讲解 134
习题六 137
第7章 Burnside引理与Pólya定理 138
7.1 群的基本概念 140
7.2 置换群 141
7.3 置换的类型 146
7.4 Pólya定理 151
7.5 例题讲解 158
习题七 160
第8章 组合设计 162
8.1 Kirkman女生问题与Steiner三元系 162
8.2 36名军官问题和拉丁方 165
习题八 169
第9章 组合算法在程序设计中的应用 171
9.1 组合算法分析 171
9.2 组合计数在程序设计中的应用 181
习题答案与提示 187
习题一 187
习题二 188
习题三 188
习题四 188
习题五 190
习题六 190
习题七 191
习题八 192
参考文献 193