排列组合 “n个球放入m个盒子“里,再来一遍
1.球同,盒不同,无空箱
C(n-1,m-1), n>=m
0, n<m
使用插板法:n个球中间有n-1个间隙,现在要分成m个盒子,而且不能有空箱子,所以只要在n-1个间隙选出m-1个间隙即可
2.球同,盒不同,允许空箱
C(n+m-1,m-1)
我们在第1类情况下继续讨论,我们可以先假设m个盒子里都放好了1个球,所以说白了就是,现在有m+n个相同的球,要放入m个不同的箱子,没有空箱。也就是第1种情况
3.球不同,盒相同,无空箱
第二类斯特林数dp[n][m]
dp[n][m]=m*dp[n-1][m]+dp[n-1][m-1],1<=m<n
dp[k][k]=1,k>=0
dp[k][0]=0,k>=1
0,n<m
这种情况就是第二类斯特林数,我们来理解一下这个转移方程。
对于第n个球,如果前面的n-1个球已经放在了m个箱子里,那么现在第n个球放在哪个箱子都是可以的,所以m*dp[n-1][m];
如果前n-1个球已经放在了m-1个箱子里,那么现在第n个球必须要新开一个箱子来存放,所以dp[n-1][m-1]
其他的都没法转移过来
4.球不同,盒相同,允许空箱
sigma dp[n][i],0<=i<=m,dp[n][m]为情况3的第二类斯特林数
这种情况就是在第3种情况的前提下,去枚举使用的箱子的个数
5.球不同,盒不同,无空箱
dp[n][m]*fact[m],dp[n][m]为情况3的第二类斯特林数,fact[m]为m的阶乘
因为球是不同的,所以dp[n][m]得到的盒子相同的情况,只要再给盒子定义顺序,就等于现在的答案了
6.球不同,盒不同,允许空箱
power(m,n) 表示m的n次方
每个球都有m种选择,所以就等于m^n
7.球同,盒同,允许空箱
dp[n][m]=dp[n][m-1]+dp[n-m][m], n>=m
dp[n][m]=dp[n][m-1], n<m
边界dp[k][1]=1,dp[1][k]=1,dp[0][k]=1
现在有n个球,和m个箱子,我可以选择在所有箱子里面都放上1个球,也可以不选择这个操作。
如果选择了这个操作,那么就从dp[n-m][m]转移过来
如果没有选择这个操作,那么就从dp[n][m-1]转移过来
8.球同,盒同,无空箱
dp[n-m][m],dp同第7种情况,n>=m
0, n<m
因为要求无空箱,我们先在每个箱子里面放1个球,然后还剩下n-m个球了,再根据情况7答案就出来了
排列组合 “n个球放入m个盒子“里,再来一遍相关推荐
- 排列组合 n个球放入m个盒子问题 总结
算法: HDU - 6397 Character Encoding 插板法+容斥原理 https://blog.csdn.net/xiang_6/article/details/81868989 [ ...
- 排列组合 n个球放入m个盒子算法 总结
问题: 总结 https://blog.csdn.net/qwb492859377/article/details/50654627 N个球放M个盒子问题 https://blog.csdn. ...
- 排列组合 n个球放入m个盒子m问题 总结
求,盒子都可以分成是否不能区分,和能区分,还能分成是否能有空箱子,所以一共是8种情况,我们现在来一一讨论. 1.球同,盒不同,无空箱 C(n-1,m-1), n>=m 0, n<m 使用插 ...
- 排列组合 “n个球放入m个盒子m“问题 总结
求,盒子都可以分成是否不能区分,和能区分,还能分成是否能有空箱子,所以一共是8种情况,我们现在来一一讨论. 1.球同,盒不同,无空箱 C(n-1,m-1), n>=m 0, n 使用插板法:n个 ...
- n个小球放入m个盒子中_【转】排列组合 n个球放入m个盒子m问题 总结
球,盒子都可以分成是否不能区分,和能区分,还能分成是否能有空箱子,所以一共是8种情况,我们现在来一一讨论. 1.球同,盒不同,无空箱 C(n-1,m-1), n>=m 0, n 使用插板法:n个 ...
- 排列组合问题 “n个球放入m个盒子(8种)”
1.球相同,盒相同,允许空箱 2.球相同,盒相同,无空箱 3.球相同,盒不同,无空箱 4.球相同,盒不同,允许空箱 5.球不同,盒相同,无空箱 6.球不同,盒相同,允许空箱 7.球不同,盒不同,无空箱 ...
- 算法题(模板)——N个球放入M个盒子中
题目:n个球放入m个盒子中,有多少种放法 情况一:球同,盒不同,无空盒 也就是所有球都是一样的,但是盒子有区别,且不能出现空放的情况. 采用插板法,相当于在n-1个空隙中,插入m个盒子,而由于不能有空 ...
- 8个球放入3个盒子方式_球放进盒子问题(8种, 可变形)
http://blog.sina.com.cn/s/blog_3f2c3d220100d57q.html 假设有m个小球,放入n个盒子里(),有几种放法? (1)盒子不同,球不同,允许有空. 由于每个 ...
- n个小球放入m个盒子中_联考数学复习指导:M个球放入N个盒子
为了广大学员能够更好的备考2015年考研, 特收集了联考数学指导:M个球放入N个盒子,希望对各位考生有所帮助. M个球放入N个盒子的放法 N个盒子编号为1到N, 把M个相同的球放入这N个不相同的盒子, ...
最新文章
- 台湾大学林轩田机器学习技法课程学习笔记1 -- Linear Support Vector Machine
- python后端服务器_毕设里配合Python后端使用的所谓”CGI服务器“
- linux 时间同步ntp
- 什么是事务(Transaction)
- java 懒加载模式_JavaScript面试系列:JavaScript设计模式之桥接模式和懒加载
- 计算机在材料科学与工程中的应用,计算机在材料科学与工程中的应用
- Flask从入门到精通之MySQL数据库操作
- Python3序列赋值、序列解包详解(上)
- 2021-06-22文本样式
- [翻译].NET委托:一个C#睡前故事 [转]
- C++封装继承多态理解
- 人工智能AI编程基础(一)
- 基于ricequant神经网络量化交易
- 自我时间管理与时间意识
- 【Shawn-Git】gitlub的使用指导(针对六届软件杯)
- 12123 上传照片到文件服务器失败,12123软件上传不了照片怎么回事(教你最合理的上传方法)...
- 软件项目管理复习(一-七章)
- 5G手机今日“下凡”,价格大战暗流涌动
- 如何实现水平垂直居中?
- 用Navicat连接MySQL的安装及配置