组合计数2-隔板法
1.算法分析
博客参考:https://blog.csdn.net/sdz20172133/article/details/81431066?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162452359116780264076722%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=162452359116780264076722&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-81431066.pc_search_result_control_group&utm_term=%E9%9A%94%E6%9D%BF%E6%B3%95&spm=1018.2226.3001.4187
1.1 隔板法定义
隔板法就是在n个元素之间的n - 1空中插入k个板,将n个元素分为k+1组的方法。
隔板法满足:
- 所分成的每一组至少一个元素
- 分成的组彼此相异
1.2 普通隔板法
例1: 把n个相同的小球放入m个不同的箱子,每个箱子至少一个,问有几种情况?
答案: C(n-1, m-1):n-1个地方插入m-1个隔板
例2: 求方程 x+y+z=10的正整数解的个数。
答案: C(9, 2)。等价于有10个小球,然后放入3个箱子里面
推广: 方程 a 1 + a 2 + . . . + a n = m a_1+a_2+...+a_n=m a1+a2+...+an=m 的正整数解的个数为 C(m-1, n-1)
例3: n个元素,从中选择m个元素,要求选出的元素没有相邻元素的选法一共多少种?
答案: C(n-m+1, m)。要选择m个元素,那么就会剩下n-m个元素没有被选择,这n-m+1个元素产生n-m+1个空格(包含首尾空格),然后把m个小球插入到n-m+1个空格内,即C(n-m+1, m)
1.3 添元素隔板法
例4: 求方程 x+y+z=10的非负整数解的个数。
答案: C(12, 2) = 66。因为x、y、z可以为0,那么可以添加3个球,提前放入x、y、z三个箱子里面,这样就满足普通隔板法的条件了,那么问题转换为将13个相同的球放入3个不同的箱子里面,就是C(12, 2) = 66。
推广: 方程 a 1 + a 2 + . . . + a n = m a_1 + a_2 + ... + a_n = m a1+a2+...+an=m 的非负整数解的个数为:C(n + m - 1, n-1)
例5: 把10个相同小球放入3个不同箱子,第一个箱子至少1个,第二个箱子至少3个,第三个箱子可以放空球,有几种情况?
答案: C(8, 2) = 28。可以在第二个箱子先放入2个小球,那么还剩下8个小球。在第3个箱子里面添加一个小球,那么问题就变为将9个小球放入3个不同的箱子,每个箱子至少1个,求方案数,即为C(8, 2)。
例6: 将20个相同的小球放入编号分别为1,2,3,4的四个盒子中,要求每个盒子中的球数不少于它的编号数,求放法总数。
答案: C(13, 3) = 286。首先分别提前放入 0、1、2、3个小球在这4个盒子内,然后剩下14个小球,放入4个盒子。
例7: 有一类自然数,从第三个数字开始,每个数字都恰好是它前面两个数字之和,直至不能再写为止,如257,1459等等,这类数共有几个?
答案: C(10, 2) = 45。如果一个数字的前2位确定了,那么这个数字就确定了,设前2位分别为a和b,那么有a + b <= 9,且a为正整数,b为非负数,求这个方程的正整数解个数。因为是不等式,那么可以增加一个c,使得问题转换为:a+b+c = 9,a>=1,b>=0,c>=0,求等式的解数目。那么给b和c添加一个元素,变为11个小球选择3个箱子放入,即为C(10, 2)
推广: a 1 + a 2 + . . . a n < = m , a 1 > = 0 , a 2 > = 0 , . . . , a n > = 0 a_1+a_2+...a_n<=m,a_1>=0,a_2>=0,...,a_n>=0 a1+a2+...an<=m,a1>=0,a2>=0,...,an>=0 的解方案数为:C(n + m, n)
1.4 选板法
例8: 有10粒糖,如果每天至少吃一粒(多不限),吃完为止,求有多少种不同吃法?
答案: 2 9 = 512 2^9=512 2