排列组合:球盒问题
排列组合:球盒问题
有n个球和m个盒子,根据是否允许为空,球是否相同,盒子是否相同分成8种情况
前置知识:第二类斯特林数
1.允许为空、球不相同、盒子不相同
- 给每个球选择它的盒子,所以结果为
2.不允许为空、球不相同、盒子不相同
- 假设盒子相同,这个问题就转换为将n个元素分成m个集合,然后对盒子全排列即
,所以结果就为
3.允许为空、球相同、盒子不相同
- 假设不允许为空,并且球数为n+m 个,那么结果为
,再给所有的盒子取出一个球,结果不变,所以为
4.不允许为空、球相同、盒子不相同
- 插板法,n个球就有n-1个空,插入m-1个板子,所以结果为
5.允许为空、球不同、盒子相同
- 第6问的求和,
+ + ... +
6.不允许为空、球不同、盒子相同
- 就是n个元素分为m个集合,
7.允许为空、球相同、盒子相同
- 分解,有空盒和没有的情况
- 有空盒时,与去掉一个空盒的情况数量相同
- 没有时,转换为问题8
- 又根据问题8可以转换为7,得出结果为
- 为了简化,n小于m时,直接令
省去不必要的计算
8.不允许为空、球相同、盒子相同
- 所以盒子里的球全减少1个,转换为问题7,
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!