将m个苹果放入n个盘子的问题
来源:互联网 发布:黎明三角洲淘宝店铺 编辑:程序博客网 时间:2024/04/30 03:23
问题1:
m----->相同, n---> 相同,可为空
将m个苹果放进n个盘子中,盘子允许空,有多少种方法。同时注意例如1、2和2、1这两种方案是一种方案。
思路:
其实这跟将一个整数m分成n个整数之和是类似的,
设f[m][n]为将m分成最多n份的方案数,且其中的方案不重复,每个方案前一个份的值一定不会比后面的大。
则有:f[m][n] = f[m][n - 1] + f[m - n][n];
= 1 // m== 0 || n == 1
= 0 // m < 0
f[m][n - 1]相当于第一盘子中为0,只用将数分成n - 1份即可。
因为0不会大于任何数,相当于f[m][n - 1]中的方案前面加一个为0的盘子,
而且不违背f的定义。所以f[m][n - 1]一定是f[m][n]的方案的一部分,即含有0的方案数。
f[m - n][n]相当于在每个盘子中加一个数1。因为每个盘子中加一个数1不会影响f[m][n - 1]中的方案的可行性,也不会影响f的定义。
所以f[m - n][n]一定是f[m][n]的方案的一部分,即不含有0的方案数。
问题2:
问题描述:将整数N分成K个整数的和 且每个数大于等于A
小于等于B 求有多少种分法
问题3:
m----->相同, n---> 相同,不能为空
将m个苹果放进n个盘子中,有多少种方法。同时注意例如1、2和2、1这两种方案是一种方案。
思路:
先把每个都放一个苹果,这样问题就转化为:m-n个苹果放进n个盘子里,盘子允许空,即问题1
问题4:
第一类Stirling数是有正负的,其绝对值是包含n个元素的集合分作k个环排列的方法数目。
递推公式为,
S(n,0) = 0, S(1,1) = 1.
S(n,k) = S(n-1,k-1) + (n-1)S(n-1,k)。
n个元素的集合分作k个环排列的方法是s(n,k),那么
1.可由前n-1个元素k-1个环的s(n-1,k-1); 即最后一个元素为单环,前n-1个构成k-1环;
2.第n个元素一定不是单环,可以由n-1个元素k个环,把第n个数任意的放入一个环中组成新环!即得到n个
元素的集合分作k个环,假设n个元素的集合分作k个环,那么由于n,不在单环中,那么可以把n所在的环中把n
剔除,即得到了n-1个元素,k个环,即充分与必要性都得证!
因而:S(n,k) = S(n-1,k-1) + (n-1)S(n-1,k)。得证!
问题5:
第二类Stirling数是把包含n个元素的集合划分为正好k个非空子集的方法的数目。
//n->有区别,K->非空,没区别
递推公式为,
S(n,n) = S(n,1) = 1,
S(n,k) = S(n-1,k-1) + kS(n-1,k).
上面的递推式可以用组合证明:
一方面,如果将第n个元素单独拿出来划分成1个集合,那么方法数是S(n-1,k-1);
另一方面,如果第n个元素所在的集合不止一个元素,那么可以先将剩下的n-1个元素划分好了以后再选一个集合把第n个元素放进去,方法数是k*S(n-1,k);
有加法原理得证
问题6:
Bell数和Stirling数
B(n)是包含n个元素的集合的划分方法的数目。
集合的划分:非空,
B(0) = 1, B(1) = 1,
B(n) = Sum(1,n) S(n,k). 其中Sum(1,n)表示对k从1到n求和,
问题7:
当K是有区别的时候,则一般都要在没有区别的基础上乘以K的全排列。
- 将m个苹果放入n个盘子的问题
- m个苹果放入n个盘子
- m个苹果放入n个盘子
- m个苹果放入n个盘子
- m个苹果n个盘子问题
- (11)分苹果问题:将m个相同的苹果放到n个相同的盘子中,多少钟分法?
- 关于将m个苹果放到n个盘子中
- POJ 1664 放苹果(m个苹果放入n个盘子
- POJ 1664 求m个苹果放入n个盘子的不同放法数目 递归 分类讨论
- poj 1664 m个苹果放入n个盘子,递归写法和DP写法
- 将m个相同的苹果放进n个相同的盘子中,盘子允许空,有多少种方法
- 【放苹果】m个苹果放到n个盘子中
- poj 1664 放苹果 将m个相同的苹果放进n个相同的盘子中,盘子允许空,有多少种方法
- C/C++编程题1-放苹果,将m个相同的苹果放进n个相同的盘子中,盘子允许空,有多少种方法
- 转:poj 1664 放苹果 将m个相同的苹果放进n个相同的盘子中,盘子允许空,有多少种方法
- n个盘子放m个苹果(动态规划)
- 【C++】m个苹果放在N个盘子里
- 【华为oj2041】n个苹果放到m个盘子里
- sed行对象【列表】和单个字符对象【替换】
- iphone关于self.用法的一些总结
- 第6章_数组_编程练习_Exercise6_19(成绩排名)
- python 处理字符ASICII码
- 第6章_数组_编程练习_Exercise6_25(二维数组的相乘)
- 将m个苹果放入n个盘子的问题
- javascript中替换表单中的全角字符为半角字符
- 查杀木马 QQ电脑管家 vs. 金山卫士
- Linux 防火墙
- CPU 调度
- JSTL1.1函数标签库(functions)如fn:length
- 微普之行--感怀
- 自定义类似于listView中Item背景
- java.util.StringTokenizer