这篇博客总结一下下边8种问题:

1. 有n个相同的球,k个不同的盒子,把n个球放到盒子里,盒子不允许为空,有多少种方案。

2. 有n个相同的球,k个不同的盒子,把n个球放到盒子里,盒子允许为空,有多少种方案。

3. 有n个相同的球,k个相同的盒子,把n个球放到盒子里,盒子允许为空,有多少种方案。

4. 有n个相同的球,k个相同的盒子,把n个球放到盒子里,盒子不允许为空,有多少种方案。

5. 有n个不同的球,k个相同的盒子,把n个球放到盒子里,盒子不允许为空,有多少种方案。

6. 有n个不同的球,k个相同的盒子,把n个球放到盒子里,盒子允许为空,有多少种方案。

7. 有n个不同的球,k个不同的盒子,把n个球放到盒子里,盒子不允许为空,有多少种方案。

8. 有n个不同的球,k个不同的盒子,把n个球放到盒子里,盒子允许为空,有多少种方案。

题解:

1. 有n个相同的球,k个不同的盒子,把n个球放到盒子里,盒子不允许为空,有多少种方案。

这个问题等价于求n=a1+a2+a3+...ak ,ai不能为0的方案数。隔板法,插空法。

把n个相同的球放在一行,那么这n个球中间有n-1个空,那么在这n-1个空中选k-1个空,放k-1个隔板,就把这n个球分成了k份。

所以方案数为C(n-1,k-1)  , 组合数公式,表示从n-1个取k-1个的方案数。

例题: 牛客网 https://ac.nowcoder.com/acm/contest/553/D

2. 有n个相同的球,k个不同的盒子,把n个球放到盒子里,盒子允许为空,有多少种方案。

和问题1方法一样,这个允许盒子为空。n=a1+a2+a3+...ak ,ai可以为0的方案数。

这个题等价于 有n+k个相同的球,k个不同盒子,盒子不许为空的方案数。因为:把这n+k个球分到k个盒子之后,把每个盒子里的球的数量都减一,那么球的总数就是n个了,盒子里的球就可能是空的了。

所以方案数为 C(n+k-1,k-1).

例题: 牛客网 https://ac.nowcoder.com/acm/contest/553/D

3. 有n个相同的球,k个相同的盒子,把n个球放到盒子里,盒子允许为空,有多少种方案。

这是一道动态规划题,用dp[i][j]表示把n个球放到不超过k个盒子里的方案数。

我们可以根据有没有空盒子列出下面这个转移方程:

dp[i][j]=dp[i][j-1]+dp[i-j][j]   ,解释一下:

dp[i][j-1] 表示有空盒子,那么就是i个球放到不超过j-1个盒子的方案数

dp[i-j][j] 表示没有空盒子,那么每个盒子最少要有1个球,那么先把每个盒子放一个球,还剩下i-j个球,把剩下的i-j个球分到不超过j个盒子。

dp[n][k]就是答案。

4. 有n个相同的球,k个相同的盒子,把n个球放到盒子里,盒子不允许为空,有多少种方案。

和第3个方法一样,也是动态规划,dp[i][j]表示的意义和第3题一样。

答案应该是 dp[n][k]-dp[n][k-1].

显然,(n个球放到k个相同的盒子,盒子允许为空的方案数)减去(n个球放到k-1个盒子,盒子允许为空的方案数)就是 (n个球放到k个盒子,盒子不允许为空的方案数)。

5. 有n个不同的球,k个相同的盒子,把n个球放到盒子里,盒子不允许为空,有多少种方案。

这个题是第二类Stirling数,不知道的自己百度。

用S(n,k)表示n个不同的球,放到k个不同的盒子,盒子不允许为空的方案数。

那么 S(n,k)=S(n-1,k-1)+k*S(n-1,k)    1<=k<=n  S(0,0)=1,S(i,0)=0

解释一下怎么理解这个状态转移方程,第n个球可以有两种状态,第n个球单独在一个盒子里,第n个球所在盒子至少有两个。

S(n-1,k-1) 就是第n个球单独在一个盒子里,那么就剩n-1个不同球,分到剩下的k-1个盒子里。

k*S(n-1,k) :先把前i-1个分配到k个盒子里,方案数是S(n-1,k) ,第n个球然后就有k种方法,总方案数就是k*S(n-1,k)

dp打出一个二维数组的表,就能算出答案

6. 有n个不同的球,k个相同的盒子,把n个球放到盒子里,盒子允许为空,有多少种方案。

和第5题方法一样,答案就是 S(n,1)+S(n,2)+.....S(n,k)

显然是这样的,不解释。

7. 有n个不同的球,k个不同的盒子,把n个球放到盒子里,盒子不允许为空,有多少种方案。

和第5题的区别是盒子不同,那么答案就是 S(n,k)*k!

8. 有n个不同的球,k个不同的盒子,把n个球放到盒子里,盒子允许为空,有多少种方案。

k的n次方,每个球都有k中选择。

有什么问题欢迎在下边评论。

组合数学 8种盒子放球问题相关推荐

  1. 排列组合与盒子放球问题

    文章目录 排列组合 定义 组合公式 1.证明 C n m = C n n − m C_n^m=C_n^{n-m} Cnm​=Cnn−m​ 2.证明 C n m C m k = C n k C n − ...

  2. SDNU 1011.盒子与球

    SDNU 1011.盒子与球 Time Limit: 1000 MS Memory Limit: 32768 KB Total Submission(s): 885 Accepted Submissi ...

  3. 放球问题 组合数学 转自百度百科

    放球问题是指把 n个球放到 m个盒子里的方案数.它是组合数学的一个非常重要的问题.根据球是否相同,盒子是否有区别,是否允许有空盒以及n与m 的大小关系,放球问题可分成 16 个子问题.不同情况总结见下 ...

  4. 组合数学之放球问题 【附斯特林数】

    放球问题在组合数学中是一个经典问题,在ACM比赛中也经常会出现类似的题目,这里做一个归纳. 我们假定现在有n个球,要放到m个盒子中,根据情况的不同主要可以分为一下8类(这里确保n>=m) 编号 ...

  5. 5个球放入3个箱子_排列组合问题,把5个相同的球放到三个相同的盒子里,要求每个盒子都有球,则不同的放球方法是多少?...

    一个一个的列出来就好了. 2种.311和221 ----............... 修改. 这本来就是从一个一个列举出来的.要用到排列组合的都是一些特定的情况.不过这道题貌似用不上. 比如5个球变 ...

  6. 【C语言基础练习】有红、绿、蓝三种颜色的球各3个。现在将着9个球混合放在一个盒子中,从中任意摸出6个,编程计算摸出球的各种颜色搭配。

    有红.绿.蓝三种颜色的球各3个.现在将着9个球混合放在一个盒子中,从中任意摸出6个,编程计算摸出球的各种颜色搭配. 1 #include<stdio.h>2 int main()3 {4 ...

  7. 有红、黄、绿三种颜色的球,其中红球 3 个, 黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。1. 输出情况总数;2.输出摸取情

    内容1:有红.黄.绿三种颜色的球,其中红球 3 个, 黄球 3 个,绿球 6 个.先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配.1. 输出情况总数;2.输 ...

  8. 【集合论】Stirling 子集数 ( 斯特林子集数概念 | 放球模型 | Stirling 子集数递推公式 | 划分的二元关系 加细关系 )

    文章目录 一.Stirling 子集数 二.放球模型 三.Stirling 子集数递推公式 四.Stirling 子集数示例 ( 四元集等价关系个数 ) 五.划分的二元关系 加细关系 一.Stirli ...

  9. 合理放球(递推之第二类斯特林数 C++)

    合理放球 总时间限制: 1000ms 内存限制: 65536kB 描述 n个各不相同球放入m个相同的盒子里,球全部放完后,要求最后没有空盒!求不同的放法总数. 输入 一行两个数n和m n表示球数,m表 ...

  10. 【Python】有红、黄、绿三种颜色的球,编程计算摸出球的各种颜色搭配

    Python三色球问题 题目 代码 结果 题目 有红.黄.绿三种颜色的球,其中红球 3 个, 黄球 3 个,绿 球 6 个.先将这 12 个球混合放在一个盒子中,从中任意摸 出 8 个球,编程计算摸出 ...

最新文章

  1. 几个软件研发团队管理的小问题
  2. vue代理配置(vue+django前后端分离项目)
  3. linux 查看文件夹大小 du命令
  4. pr渲染程序选哪个_PR的bug你遇到过几个?
  5. 使用 SVG 动画实现弹性的页面元素效果
  6. linux之setsid命令
  7. Redis灵魂14问?真香
  8. java部署到服务器乱码_java web项目发布到linux服务器上运行出现乱码
  9. android 例子源码_AOSP系列文章(一)-Android系统源码下载和编译
  10. 矜情作态的拼音及解释
  11. 计算机考研哈理工好吗,哈尔滨理工大学考研难吗?一般要什么水平才可以进入?...
  12. 磁盘调度算法课程设计(附源代码)
  13. C++11基于范围的for循环
  14. 浅析城市道路照明的安全及节电设备的应用
  15. PPT的视频由于无编码解码器无法播放问题
  16. VUE项目开发,使用开发者工具查看源文件
  17. vmbox-android
  18. 移动端开发入门--基础知识
  19. 手机计算机藏应用,手机“计算器”隐藏功能,一键把隐私照片加密
  20. 如何获取优酷视频的通用代码?

热门文章

  1. 没Switch也能玩有氧拳击 咕咚智能运动手表F4全面评测
  2. 神奇小子重启自动驾驶项目,推出开源软件Comma Neo
  3. 弹性容器中 子元素的flex属性介绍
  4. The Byzantine Generals Problem拜占庭将军问题理解
  5. 简单易懂的讲解深度学习(入门系列之一)
  6. 最小采样频率计算公式_音频文件大小计算公式-好文转载
  7. 【bzoj4972】小Q的方格纸 前缀和
  8. 【破解】PyCharm2018专业版激活(激活到2100年)
  9. 模拟信号和数字信号的区别和特点
  10. 搜索引擎工作原理解析