将m个苹果放入n个盘子的问题【转】
来自:http://blog.csdn.net/qq675927952/article/details/6312255
问题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 求有多少种分法
int Dynamics(int n, int k, int min) //将n分为k个整数 最小的大于等于min,最大不超过B
{ if(n < min) return ;//当剩下的 比min小,则不符合要求 返回0
if(k == ) return ;
int sum = ;
for(int t = min; t <= B; t++)
{
sum += Dynamics(n-t, k-, t);
}
return sum; }
问题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个篮子
题目 :X个相同的苹果放入Y个篮子,(1)篮子可以为空 ,篮子不同. 放法有C(X+Y-1,Y-1 );// (2)篮子不可以为空,篮子不同.放法有C(X-1,Y-1) //插挡板法 分析有了这个组合 ...
- Rshare Pro是否可以放入至客户企业App Store?
现在很多客户内部部署了苹果授权的企业内部的AppStore,我们的Rshare Pro 是完全允许放入企业搭建的AppStore平台中.但每份需要收费20美元,换成人民币是120元.
- m个相同苹果放的n个相同盘子中的算法
m个相同的苹果,放在n个相同的盘子中,由于相同,使用排列组合的方法不好处理.这个问题困扰了我很久 最后由大神“或缺”给出了答案: 以8个苹果放在3个盘子中为例 思路: 8苹果3盘子 =8苹果2盘子+5 ...
- EC笔记:第三部分:17、使用独立的语句将newed对象放入智能指针
一般的智能指针都是通过一个普通指针来初始化,所以很容易写出以下的代码: #include <iostream> using namespace std; int func1(){ //返回 ...
- tuple放入dict中
tuple放入dict中是否可以正常运行 # 将tuple放入dict中 a = ('AI','Kobe','Yao') b = ('AI',['Kobe','Yao']) dict1 = {'a': ...
- ios-将代码创建的视图控件放入拖拽控件的下面
如图所示 图片是拖拽上去的imageView,橘黄色控件是在代码中创建的添加上去的,此时黄色view在imageView 上方 调用方法bringSubviewToFront:试图将imageView ...
- java通过文件路径读取该路径下的所有文件并将其放入list中
java通过文件路径读取该路径下的所有文件并将其放入list中 java中可以通过递归的方式获取指定路径下的所有文件并将其放入List集合中.假设指定路径为path,目标集合为fileList,遍 ...
- 将DLL放入到资源中,运行时自动加载
今天在看到 一个小软件,考勤用的 AttendanceSheet_V_1_2,只有一个EXE文件,绿色的随便考到哪里都可以运行. 顺手反编译后发现,他将需要的DLL也放入到资源文件了,在启动的时候自动 ...
随机推荐
- Jdk配置串在profile中
JAVA_HOME=/home/will/appSource/jdk1.7.0_25PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/dt.jar ...
- svnUbuntu下安装与使用(ZT)
1.安装包 1.$ sudo apt-get install subversion 2.创建项目目录 $ sudo mkdir /home/xiaozhe/svn $ cd /home/xiaozhe ...
- 【转】Polymer API开发指南 (二)(翻译)
原文转自:http://segmentfault.com/blog/windwhinny/1190000000596258 公开 property 当你公开一个 Polymer 元素的 propert ...
- 使用WebMatrix发布网站到Windows Azure
1. 在本地机安装 WebMatrix, 安装Windows Azure SDK 2. 登录Windows Azure, 网站 > 创建一个新网站或选择已有网站 3. 在发布应用程序,选择下载发 ...
- magento问题集2
SQLSTATE[42S02]: Base table or view not found: 1146 Table XXXXXX 安装Galathemes.com theme插件. 首页无法打开,提示 ...
- magento数据库备份导入还原
Magento数据库备份.移植终极解决方案+3 分类:Magento教程 标签:magento搬家.magento数据库备份.magento更换域名.magento移植 4,355人浏览 作为电子商务 ...
- 转:C#精髓 第四讲 GridView 72般绝技
说明:准备出一个系列,所谓精髓讲C#语言要点.这个系列没有先后顺序,不过尽量做到精.可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注. C#精髓 第四讲 GridView 72般绝技 作者 ...
- LeetCode Find the Duplicate Number 找重复出现的数(技巧)
题意: 有一个含有n+1个元素的数组,元素值是在1-n之间的整数,请找出其中出现超过1次的数.(保证仅有1个出现次数是超过1的数) 思路: 方法一:O(nlogn).根据鸽笼原理及题意,每次如果< ...
- OpenFlow Switch学习笔记(六)——Instructions和Actions
本文主要重点讨论OpenFlow Switch规范的指令集,它们深刻影响着数据包在Switch中的处理行为,下面开始从以下几个部分谈起. 1.Instructions 每一个Flow Entry里都包 ...
- USB描述符概述
在USB总线接口协议中,规定了一些标准的USB描述符,如表所示. 对于USB设备来说,有些USB描述符是必需的,例如: 设备描述符 配置描述符 字符串描述符 接口描述符 端点描述符 其余一些描述符并非 ...