生成函数与排列组合
组合数学第五版答案

组合数学第五版答案简介《组合数学第五版答案》是对组合数学第五版的习题答案进行整理和解答的参考资料。
组合数学是一门研究集合之间的组合方式和规律的数学科学。
它广泛应用于计算机科学、统计学、运筹学等领域,在算法设计、图论分析等方面有着重要的应用价值。
本文档包含了《组合数学第五版》中各章节的习题答案,主要内容涵盖了排列组合、图论、生成函数、递推关系、容斥原理等多个重要主题。
通过对这些习题的解答,可以帮助读者更好地理解组合数学的基本概念、方法和应用。
目录•第一章:基本概念和方法•第二章:排列组合•第三章:图论•第四章:生成函数•第五章:递推关系•第六章:容斥原理第一章:基本概念和方法1.习题1:证明排列的总数为n! (阶乘)。
2.习题2:计算组合数C(n, m)的值。
3.习题3:探究组合数的性质并给出证明。
第二章:排列组合1.习题1:计算排列数P(n, m)的值。
2.习题2:解决带有限制条件的排列问题。
第三章:图论1.习题1:证明图论中的握手定理。
2.习题2:解决图的着色问题。
第四章:生成函数1.习题1:利用生成函数求解递推关系。
2.习题2:应用生成函数解决组合数学问题。
第五章:递推关系1.习题1:求解递推关系的通项公式。
2.习题2:应用递推关系解决实际问题。
第六章:容斥原理1.习题1:理解容斥原理的基本思想并给出证明。
2.习题2:应用容斥原理解决计数问题。
结论通过对《组合数学第五版答案》中的习题进行解答,读者可以更好地掌握组合数学的基本概念和方法。
组合数学在计算机科学、统计学、运筹学等领域具有广泛的应用,通过学习和理解组合数学,读者可以提高解决实际问题的能力,并为进一步深入研究相关领域打下坚实的基础。
注:本文档中的习题答案仅供参考,请读者在独立思考和解答问题时加以思考和验证,以深入理解组合数学的核心概念和方法。
组合数学例题和知识点总结

组合数学例题和知识点总结组合数学是一门研究离散对象的组合结构及其性质的数学分支。
它在计算机科学、统计学、物理学等领域都有着广泛的应用。
下面我们通过一些例题来深入理解组合数学中的重要知识点。
一、排列组合排列是指从给定的元素集合中取出若干个元素按照一定的顺序进行排列。
组合则是指从给定的元素集合中取出若干个元素组成一组,不考虑其顺序。
例题 1:从 5 个不同的元素中取出 3 个进行排列,有多少种不同的排列方式?解:根据排列的公式,\(A_{5}^3 = 5×4×3 = 60\)(种)例题 2:从 5 个不同的元素中取出 3 个进行组合,有多少种不同的组合方式?解:根据组合的公式,\(C_{5}^3 =\frac{5×4×3}{3×2×1} =10\)(种)知识点总结:1、排列数公式:\(A_{n}^m = n×(n 1)×(n 2)××(n m + 1)\)2、组合数公式:\(C_{n}^m =\frac{n!}{m!(n m)!}\)二、容斥原理容斥原理用于计算多个集合的并集的元素个数。
例题 3:在一个班级中,有 20 人喜欢数学,15 人喜欢语文,10 人既喜欢数学又喜欢语文,求喜欢数学或语文的人数。
解:设喜欢数学的集合为 A,喜欢语文的集合为 B,则喜欢数学或语文的人数为\(|A ∪ B| =|A| +|B| |A ∩ B| = 20 + 15 10= 25\)(人)知识点总结:容斥原理的一般形式:\(|\cup_{i=1}^{n} A_i| =\sum_{i=1}^{n} |A_i| \sum_{1\leq i < j\leq n} |A_i ∩ A_j| +\sum_{1\leq i < j < k\leq n} |A_i ∩ A_j∩ A_k| +(-1)^{n 1} |A_1 ∩ A_2 ∩ ∩ A_n|\)三、鸽巢原理鸽巢原理也叫抽屉原理,如果有 n + 1 个物体放入 n 个抽屉中,那么至少有一个抽屉中会放有两个或更多的物体。
组合数学课件(第七章 生成函数)

§ 7.1 生成函数例6 § 7.1指数 生成函数的基本概念
7.1.2 指数生成函数
例 题
例6、求序列(p(0,0), p(2,1), p(4,2),…, p(2n,n),…)的指数生成函数fe(x)。
解:由定义7.2及公式P(n,r)=r!C(n,r),以及例3的结论,有 x x2 xn f e ( x ) p(0, 0) p(2,1) p(4, 2) ... p(2n, n) ... 1! 2! n! 0 2 x 4 x 2 ... 2n x n ... 0 1 2 n (1 4 x )1 2
§7.1 指数生成函数例7 §7.1 生成函数的基本概念
7.1.2 指数生成函数
例 题
例7、求序列{1,α,α2,…,αn,…}的指数生成函 数fe(x)。其中α是实数。
2 n x x x fe ( x ) 1 2 ... n ... e x 1! 2! n!
组合数学课件
制作讲授:王继顺
目录(1)
目
第1章 什么是组合数学 1.1引例 1.2组合数学研究对象、内容和方法 第2章 鸽巢原理 2.1 鸽巢原理:简单形式 2.2 鸽巢原理:加强形式 2.3 Ramsey定理 2.4 鸽巢原理与Ramsey定理的应用 本章小结 习题 第3章 排列与组合 3.1 两个基本的计数原理 3.2 集合的排列与组合 3.3 多重集的排列与组合 本章小结 习题
例 题
例2、求序列(C(n-1,0), -C(n,1), C(n+1,2), …, (1)kC(n+k-1,k), … )的生成函数。
§7.1 生成函数例2
解:由定义7.1及二项式定理的推论3.10.2有
验证自由组合定律的三种方法

验证自由组合定律的三种方法自由组合定律是概率论中的基本定理之一,它描述了在一组元素中选择若干个元素的不同组合方式的数量。
这个定理的重要性在于它能够用来解决各种实际问题,例如在抽奖、排列组合、统计等领域中。
在本文中,我们将探讨三种不同的方法来验证自由组合定律。
方法一:直接验证法自由组合定律可以表述为:在$n$个元素中,选择$k$个元素的不同组合方式的数量为$C_n^k$,其中$C_n^k=frac{n!}{k!(n-k)!}$。
我们可以采用数学归纳法来证明这个定理。
假设当$k=m(m<n)$时定理成立,那么当$k=m+1$时,我们需要证明:$$C_n^{m+1}=C_{n-1}^m+C_{n-1}^{m+1}$$我们可以将$n$个元素分成两组:第一组有$m+1$个元素,第二组有$n-m-1$个元素。
那么在这$n$个元素中选择$m+1$个元素的组合方式,可以分为两种情况:一种是包括第一组中的一个元素,另一种是不包括第一组中的任何元素。
对于第一种情况,我们需要从第一组中选择一个元素,从第二组中选择$m$个元素,共有$C_{m+1}^1C_{n-m-1}^m$种组合方式。
对于第二种情况,我们需要从第一组外的$n-1$个元素中选择$m+1$个元素,共有$C_{n-1}^{m+1}$种组合方式。
因此,总共有$C_{m+1}^1C_{n-m-1}^m+C_{n-1}^{m+1}$种组合方式,即$C_n^{m+1}$,因此定理成立。
方法二:组合意义法我们可以采用组合意义法来验证自由组合定律。
假设我们有$n$个不同的球,现在需要从中选择$k$个球,我们可以采用以下方法来计算不同组合方式的数量:1. 从$n$个球中选择第一个球,共有$n$种选择方式;2. 从剩下的$n-1$个球中选择第二个球,共有$n-1$种选择方式;3. 从剩下的$n-2$个球中选择第三个球,共有$n-2$种选择方式;4. 以此类推,从剩下的$n-k+1$个球中选择第$k$个球,共有$n-k+1$种选择方式。
组合数学课件-第一章:排列与组合

积分性质
若G(x)是母函数,则它的不定积分∫G(x)dx (其中C为常数)也是母函数。
线性性质
若G1(x)和G2(x)是两个母函数,则它们的 线性组合k1*G1(x)+k2*G2(x)(k1和k2是 常数)也是母函数。
微分性质
若G(x)是母函数,则它的导数G'(x)也是母 函数。
乘积性质
若G1(x)和G2(x)是两个母函数,则它们的 乘积G1(x)*G2(x)也是母函数。
对称性
C(n,m) = C(n,n-m),即从n个元素中取出m个元 素的组合数与从n个元素中取出n-m个元素的组 合数相等。
递推关系
C(n,m) = C(n-1,m-1) + C(n-1,m),即当前组合 数等于前一个元素在组合中和不在组合中的两种 情况之和。
边界条件
C(n,0) = C(n,n) = 1,即从n个元素中取出0个或 n个元素的组合数均为1。
典型例题解析
例1
从10个数中任取4个数,求其中最大数为6的组合数。
解析
此问题等价于从6个数(1至6)中取4个数的组合数,即 C(6,4)。
例2
在所有的三位数中,各位数字之和等于10的三位数有 多少个?
解析
此问题可转化为从9个数字(1至9)中取3个数字的组合 数,即C(9,3),然后考虑三个数字的全排列,即3!,因此 总共有C(9,3) × 3!个符合条件的三位数。
组合与排列的关系
组合数可以看作是从n个元素中取出m个元素进行排 列的种数除以m的阶乘,即C(n,m)=A(n,m)/m!。 因此,在计算组合数时也可以利用排列数和容斥原 理来进行计算。
THANKS
隔板法
将n个相同的元素分成r组的方法数可以用母函数表示为 C(n+r-1,r),其中C表示组合数。
python 排列组合的算法

主题:Python中常用的排列组合算法内容:1. 简介:Python是一种功能强大且易于学习的编程语言,其内置的库和模块使得许多复杂的算法变得易于实现。
在本文中,我们将讨论Python 中常用的排列组合算法,这些算法对于解决许多实际的问题都非常有用。
2. 排列算法:2.1 字符串的全排列:Python中可以使用`itertools`库中的`permutations`函数来获取一个字符串的所有排列。
2.2 数组的全排列:利用递归和交换元素的方式可以实现数组的全排列算法,该算法可以用来解决诸如旅行商问题等实际问题。
3. 组合算法:3.1 组合的生成:使用`itertools`库中的binations`函数可以获取一个序列的所有组合。
3.2 组合的求解:通过递归和回溯的方式可以实现组合的求解,这种方法在解决组合优化问题时非常有用。
4. 应用实例:4.1 排列和组合在密码学中的应用:排列和组合算法可以用来生成各种密码的可能组合,这对于破解密码以及设计安全的密码系统都非常重要。
4.2 排列和组合在商品排列组合的应用:在电商领域,排列和组合算法可以用来对商品进行排序和组合,以实现更好的推荐系统。
5. 总结:Python中的排列组合算法在解决实际问题中具有重要的作用,通过充分利用Python的内置库和函数,我们可以快速高效地实现各种排列组合算法。
这些算法不仅可以用来解决计算问题,还可以应用于密码学、商业推荐等实际场景中。
通过以上内容,我们可以了解Python中常用的排列组合算法以及它们在实际应用中的重要性,相信这些知识对于读者来说将是非常有价值的。
6. 代码示例:6.1 字符串的全排列示例:```pythonimport itertoolss = "abc"perm = itertools.permutations(s)for p in perm:print(''.join(p))```6.2 数组的全排列示例:```pythondef permute(nums):def backtrack(start):if start == len(nums):result.append(nums[:])returnfor i in range(start, len(nums)):nums[i], nums[start] = nums[start], nums[i] backtrack(start + 1)nums[i], nums[start] = nums[start], nums[i]result = []backtrack(0)return resultnums = [1, 2, 3]print(permute(nums))```6.3 组合的生成示例:```pythonimport itertoolss = "abcd"b = itertoolsbinations(s, 2)for c inb:print(''.join(c))```6.4 组合的求解示例:```pythondefbine(n, k):def backtrack(start, path): if len(path) == k:result.append(path[:]) returnfor i in range(start, n + 1): path.append(i)backtrack(i + 1, path) path.pop()result = []backtrack(1, [])return resultn = 4k = 2printbine(n, k))```7. 进阶应用:7.1 排列组合在数据挖掘中的应用:在数据挖掘领域,排列组合算法常常用于特征选择和模式发现,通过对特征的各种排列组合进行分析可以发现隐藏在数据中的规律和趋势。
排列组合常见21种解题方法

排列组合常见21种解题方法排列组合是高中数学中的重要知识点,也是考试中常见的题型。
在解决排列组合问题时,我们可以运用多种方法来求解,下面将介绍常见的21种解题方法。
1. 直接法,根据排列组合的定义,直接计算排列或组合的个数。
2. 公式法,利用排列组合的公式进行计算,如排列公式P(n,m)=n!/(n-m)!,组合公式C(n,m)=n!/(m!(n-m)!)。
3. 递推法,通过递推关系式求解排列组合问题,如利用排列数的递推关系P(n,m)=P(n-1,m)+P(n-1,m-1)。
4. 分类讨论法,将问题进行分类讨论,分别求解每种情况的排列组合个数,然后合并得出最终结果。
5. 组合数性质法,利用组合数的性质,如C(n,m)=C(n,n-m),C(n,m)=C(n-1,m)+C(n-1,m-1),简化计算过程。
6. 二项式定理法,利用二项式定理展开式子,求解排列组合问题。
7. 二项式系数法,利用二项式系数的性质,如n个不同元素的排列个数为n!,n个相同元素的排列个数为1,简化计算过程。
8. 容斥原理法,利用容斥原理求解排列组合问题,排除重复计算的部分。
9. 对称性法,利用排列组合的对称性质,简化计算过程。
10. 逆向思维法,从问题的逆向思考,求解排列组合问题。
11. 生成函数法,利用生成函数求解排列组合问题,将排列组合问题转化为多项式求解。
12. 构造法,通过构造合适的排列组合模型,求解问题。
13. 图论法,将排列组合问题转化为图论问题,利用图论算法求解。
14. 动态规划法,利用动态规划算法求解排列组合问题,降低时间复杂度。
15. 贪心算法法,利用贪心算法求解排列组合问题,简化计算过程。
16. 模拟法,通过模拟排列组合过程,求解问题。
17. 枚举法,将所有可能的排列组合情况列举出来,求解问题。
18. 穷举法,通过穷举所有可能的情况,求解问题。
19. 数学归纳法,利用数学归纳法证明排列组合的性质,求解问题。
集合问题的常用解题方法

集合问题的常用解题方法
集合问题是指用数学的方法来解决涉及集合的问题。
集合问题在许多数学领域中都有广泛的应用,例如组合数学、概率论、信息论等。
以下是常用的解决集合问题的方法:
1.通过枚举法求解:枚举法是将集合中的所有元素进行枚举,并统
计满足条件的元素个数。
这种方法适用于集合中元素个数较少的情况。
2.利用数学归纳法:数学归纳法是通过证明一个性质在某一类条件
下成立,然后由此推广到所有情况的方法。
这种方法常用于证明某一类集合中的某种性质。
3.利用递推法:递推法是通过对一个问题的答案按照某种递推关系
进行转化,从而求解问题的方法。
这种方法常用于解决一些递推关系的问题。
4.利用构造法:构造法是通过设计特定的构造方法来求解问题的方
法。
这种方法常用于解决构造性问题,例如找出满足某些性质的集合。
5.利用排列组合法:排列组合法是通过统计不同的排列或组合方式
来求解问题的方法。
这种方法常用于解决排列组合问题。
6.利用生成函数法:生成函数法是通过构造特定的生成函数来求解
问题的方法。
这种方法常用于解决组合数学问题。
7.利用计数法:计数法是通过对集合中元素的特征进行计数,从而
求解问题的方法。
这种方法常用于解决计数问题。
上述方法并不是绝对的,在解决集合问题时可能需要结合多种方法,并综合考虑问题的性质、数据规模等因素来选择最适合的方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1 x.. .x4)x (x2...)
11x21xx211xx51xx
x2(1x5) (1x2)2(1x)2
x 2 2 x 3 5 x 4 8 x 5 1 x 6 1 4 x 7 2 9 x 8 .8 .
所 h 2 以 1 ,h 3 2 ,h 4 5 ,h 5 8 ,......
§5 生成函数求解组合问题
例1 g ( x ) ( 1 x . x . 5 ) 1 . x ( x 2 ) 1 x ( . x . 4 ) . 是什么数列的生成函数?
解 展开式的一 xr1x般 r2xr3项 xn为 ,其中
r1r2r3n, 0r15,0r22,0r34 xn的系hn数 恰为上述方程 数的 解非 的.负 个 所以g(, x)是上述方程的非的 负个 整 h数 n数解 的生成函数。
1!32!!21!!1 !2!
(4)考虑指数生成函数
若 r令 2x2,g2x2,
则r2g2x2
x2
4!
x4
2!
2!
2! 2! 2!2! 4!
x4的 系 数 恰 r2g2的 为排 组列 合数 。
4! 令
r g b x , r2 g 2 b 2 x 2, r3 g 3 b 3 x 3
1 !
2 !
例1 常函 h n 数 1, G e(x)11 x !x 2!2...x n n !...ex
例2 排列数: P n 0,P n 1,P n 2, ,P n n
G e(x ) P n 0 P n 11 x ! P n 2x 2 ! 2 . .P .n nx n n ! (1 x )n
例3 等比数列: 1,a1,a2,a3,
例2 S ={2a, b,2c }, 求S 的所有n 组合数。 解 设n组 合 数 hn,为hn的 生 成 函 数 为
G(x)(1xx2)(1x)(1xx2) 13x5x2 5x3 3x4 x5
S 的1组合数=3:a, b, c S 的2组合数=5:2a, 2c, ab, ac, bc S 的3组合数=5:2ab, 2ac, b2c, a2c, abc S 的4组合数=3:2a2c, 2abc, ab2c S 的5组合数=1:2ab2c
x7
x8
x9
x10
1785140 765012600
7!
8!
9!
1!0
p5215
例3 用1,3,5,7,9 组成一个n 位数,要求3,7出 现偶数次。共有多少个这样的n 位数?
解 可以把重复数取为无穷。
Ge(x)11x!
x2 2!
3 1
x2 2!
x4 4!
2
e3x
ex
ex 2
2
1 4
e5x
S的r排列数pr为 ,其指数生成函数为
Ge(x)11x!x2!2xn1n!1 11x!x2!2xn2n2!
xr的 r!
11x!x2!2 xnknk! 系数 S的 即 r排为 列pr。 数
例1 S ={2a,b,2c}, 求S 的所有 r 排列数
解
令 G e(x ) 11 x !x 2 ! 2 e(x ) 1 a 11 x ! a 2x 2 ! 2 .. a .nx n n ! eax
三、多重集的排列
设 S n 1 a 1 ,n 2 a 2 , ,n k a k ,考 S 的 r 排 虑 列
先考虑一个特殊问题: S 3 r,2 g ,3 b ,
即3个红球、2个绿球、3个兰球的各种排列。 (1)求出所有组合:
1 3 n 2 n 1x n 3 n 2 n 1x n
2n 0 2 n ! n 1 2 n !
p 0 0 ,p n 3 n 2 2 n 1 , n 1 ,2 ,3 ,
习题(第4版)P182
29,30(3,6),31,36,37, 42,43,45
设 S的 r组合cr数 ,则 c0为 ,c1,c2,,c8的生成函数
G ( x ) 1 x x 2 x 31 x x 21 x x 2 x 3
1 3 x 6 x 2 9 x 3 1 x 4 0 9 x 5 6 x 6 3 x 7 x 8
根x据 4的 系,数 S的 4可 组知 合 1种 共 0 。 有
1 1x21 1x51 1 x x 5(1x)
(1
1 x)2
Cn n1xn (n1)xn
n0
n0
所h n 以 n1
例4 用n个水果组成一只个果篮。果篮中可以装 4种水果:苹果为偶数,香蕉为奇数,至多 有4个桔子,至少有一个西瓜。可以有多少 种装法?
解 设共h有 n 种装法 生。 成函数为
10x2 10x3 5x4 x5
设cn 表示满足要求的n男组 女合数。生成函数为 C(x) A(x)B(x)
10x2 10x3 285x4 281x5 840x6 728x7 630x8 350x9 150x10 38x115x12 x13
4人小组的数x4目 的为 系2数8。 5 组合为2男 :2女4, 女, 组合数恰C为 82C52 C80C54 285
(2)求出具体的组合成分 —— 三元展开式:
1rr2r3 1gg2 1bb2b3 所有2组合
1(rgb)(r2 g2 b2 rgrbgb) 所有3组合
(r3 r2grg2 r2brgbg2brb2 gb2 b3)
(rb3 gb3 r2b2 rbg2 b2g2 r3gr2gbrg2b
r3br2b2)
例5 某单位有8男5女,从中选出一个小组。要 求男士为偶数,女士至少2人,有多少种组 合方式?
解 请注意:每个人是有区别的!
设an 表示从8男士中选出偶数的数组。合 A(x) C80 C82x2 C84x4 C86x6 C88x8
128x2 70x4 28x6 x8
设bn 表 示5从 女 士 中 至 少 2人选 的出 组 合 数 B(x)(1x)5 15x
2e3x
ex
14
n0
5n
xn n!
2 3n
n0
xn n!
n0
xn n!
1
5n 23n 1 xn
4 n0
n!
p n1 45n23n1
例4 用红、白、蓝给 1xn 棋盘着色,要求红格 必须为偶数。共有多少种着色方法?
解 可以把重复数取为无穷。
Ge(x)11x!
x2 2!
2 1
x2 2!
满足要求的所有 为组合数 101028528138513328
例7
hn是方3程 r14r22r35r4 n
的非负整数解 求h的 n的个生数成,函数
解 g (x )(1x 3x 6...(1 )x 4x 8...)
(1x 2x 4...(1 )x 5x 1 0...)
1111 1 x 31 x 41 x 21 x 5, x 1
13x4x23x35x41x5 44
x x 2
x 3 5 x 4 1 x 5
1 3 1 !4 2 ! 3 3 ! 4 ! 5 !
1 ! 2 ! 3 ! 4 4 ! 4 5 !
p131!3, p242!8, p333!18, p430, p530
例2 用1,2,3,4 组成一个五位数,
1出现至少一次,至多两次; 2出现不超过1次; 3出现的最多3次; 4出现的次数必须是偶数 这样的五位数共有多少个?
解 令 G e (x ) 1 x ! x 2 ! 2 1 1 x ! 1 1 x ! x 2 ! 2 x 3 ! 3 1 x 2 ! 2 x 4 ! 4
x x2
x3
x4
x5
x6
5 18 64 215 645
1! 2! 3! 4!
5!
6!
例3 用n个水果组成一只个果篮。果篮中可以装 4种水果:苹果为偶数,香蕉为5 的倍数, 至多有4个桔子,至多有一个西瓜。可以有 多少种装法?
解 设共有 hn 种装法h。 n是方程
r1 r2 r3 r4 n
的非负整数解的其 个生 数成 。函数为
g ( x ) ( 1 x 2 .1 . x 5 . .( ) . x 1 ( . . ) x . 4 ) 1 . x ( )
Cn11!1x!Cn22!x2!2
Cnnn!
xn n!
Pn0
Pn1
1x!Pn2
x2 2!
Pnn
xn n!
xk k!
的系数恰好Pn对 k 应
二、指数生成函数
对 给 定 的h数 0,h1列 ,h2,
x x2
xn
Ge(x)h0 h1 1!h2
2! hn
n!
称 为 {hn}的 指 数 生 成 函 数 。
3 !
前式中的4次项化为:
34!44!3 4!x4 2!2!1!3!1!1!24!!
G e (x ) 1 1 x ! x 2 ! 2 x 3 ! 3 1 1 x ! x 2 ! 2 1 1 x ! x 2 ! 2 x 3 ! 3
x 2 x 3 x 4
8 ! x 8
x4 4!
e2x
ex
ex 2
12
e3x
ex
3n 1 xn
n0 2 n!
3n1 pn 2
例5 用红、白、蓝给 1xn 棋盘着色,要求红格 必须为偶数,至少有一个蓝格。
共有多少种着色方法?
解
Ge(x)1x2!2x4!411x!x2!21x!x2!2
ex2exex
ex11e3xe2xex1 2
(1x25 x50 x7)51 (x5)0
1 1 x1 1 x 51 1 x 11 1 0 x x 1 20 ( 5 1 0 x 5)0
§6 用指数生成函数求解排列问题
一、问题的提出