球可以相同也可以不同,盒子可以一样也可以不一样,盒子可以空也可以不能空,那么一共就有2x2x2=8种

n个小球放入m个盒子

1.球同,盒不同,不能空(隔板法) 一共有n-1个空隙(总共n+1个空隙,不能空要去掉头尾=n-1) ,要插m-1个板,答案为 (n-1) / (m-1)

上图就是7个小球3个盒子的一种情况

2.球同,盒不同,能空 如果给每个盒子一个球,就可以把问题转化为不能空的情况了,就相当于n+m个小球放入m个盒子且不能空,答案就是 (n+m-1) / (m-1)

3.球不同,盒同,不能空(dp问题)
dp[n][m]代表n个小球放入m个不同的盒子且不能空的方法
当 i >= 0 时,dp[i][i]=1 (i个小球放入i个盒子,就只能1个盒子放1个)
当 i > 0 时,dp[i][0]=0(都没有盒子了,肯定无解)
dp[i][j] = j 乘 dp[i-1][j] + dp[i-1][j-1]
(第i个球可以放在已经有的j个盒子的一个,有j种方法,也就是j*dp[i-1][j],
也可以是放入一个新的盒子,就是dp[i-1][j-1]) 所以答案如下:

4.球不同,盒同,可以空(第二类斯特林数) 那就是3的情况(球不同,盒同,不允许为空)用1个盒子+用2个盒子+…+m个盒子

5.球不同,盒不同,不能空 那就是3的情况(球不同,盒同,不允许为空)对盒子进行全排列 答案就是 m!*dp[n][m] (dp[n][m]是第二类斯特林数)

6.球不同,盒不同,可以空 每一个小球都有m种方法,且相互独立
答案就是m^n

7.球同,盒同,可以空(dp问题)

dp[i][j]代表球同,盒同,可以空的放法 当 i>=j 时,dp[i][j] = dp[i][j-1]+dp[i-j][j]

( 我们可以在所有的盒子上放一个球dp[i-j][j],也可以不选择这种操作,但是以后都不对其中一个盒子进行操作了,那就是dp[i][j-1] )

当 i<j 时,dp[i][i] (多余的盒子都没有什么卵用了)

当 j=1 时,1(只有一个盒子了就只能放在那个盒子了,只有一种放法)

当 i=1 时,1(只有一个球了,放哪个盒子都一样,只有一种放法)

当 i=0 时 1(没有球了,也是1种方法)
答案是

8.球同,盒同,不能空
那就是7的情况(球同,盒同,可以空)每个盒子先放一个保证不空
所以答案是 dp[n-m][m]
(n>=m)
0 (n<m)
其中dp是情况7的dp

**添一份模板代码【球同,盒同,可以空,就是情况7】 **

#include <iostream>
int main() {const int N = 11;int dp[N][N] = {}, t, n, m;for(int i=0; i<N; ++i)for(int j=1; j<N; ++j) {if(i<=1 || j==1)  dp[i][j] = 1;else if(i<j)  dp[i][j] = dp[i][i];else  dp[i][j] = dp[i][j-1] + dp[i-j][j];}scanf("%d", &t);while (t--) {scanf("%d%d", &n, &m);printf("%d\n", dp[n][m]);}return 0;
}

怕自己弄丢了巨巨的博文,就按照喜欢的格式改动了一下,看的清楚一些
大佬的原文链接

[概率练习] n个小球放入m个盒子(8大类)相关推荐

  1. [概率练习]n个小球放入m个盒子

    球可以相同也可以不同,盒子可以一样也可以不一样,盒子可以空也可以不能空,那么一共就有2*2*2=8种 n个小球放入m个盒子 1.球同,盒不同,不能空 用插板法 一共有n-1个空隙(总共n+1个空隙,不 ...

  2. n个小球放入m个盒子中_N个小球放进M个盒子算法

    N个小球放入M个盒子共有多少种方法,并输出的算法设计: 算法思路1 :暴力填充盒子 每个小球都可能放入M个盒子的任意一个,所以直接根据小球个数做递归即可,然后将存储放入hash中排重 //TODO 算 ...

  3. n个小球放入m个盒子中_n个球放入m个盒子的几种情形讨论

    科技教育创新 情形 1 :将 n 个相同的球放到 m 个不同的盒子中 问 : (1) 每个盒子至少有一球的不同放法 (n ≥ m); (2) 如果允许有空盒子的不同放法 ; (3) 求此种情形下 (1 ...

  4. n个小球放入m个盒子中_飞么盒子卫生巾自助售卖机前景

    嘿,你有没有经历过,出门在外来大姨妈却没带M巾呢? 尴尬丛生的你选择怎么做? 现在,有了新选择,这也是今天我们迫不及待想要和你们介绍的新朋友-飞么盒子,由Faimes飞么品牌自主研发出品的卫生巾售卖机 ...

  5. n个小球放入m个盒子中_联考数学复习指导:M个球放入N个盒子

    为了广大学员能够更好的备考2015年考研, 特收集了联考数学指导:M个球放入N个盒子,希望对各位考生有所帮助. M个球放入N个盒子的放法 N个盒子编号为1到N, 把M个相同的球放入这N个不相同的盒子, ...

  6. n个小球放入m个盒子中_M个球放入N个盒子的放法

    M个球放入N个盒子的放法 1.N个盒子编号为1到N, 把M个相同的球放入这N个不相同的盒子,问共有多少种放法. M个球分成了N组,即装入N个盒子.如果要求每个盒子至少有一个球,则要求M>=N. ...

  7. n个小球放入m个盒子中_【转】排列组合 n个球放入m个盒子m问题 总结

    球,盒子都可以分成是否不能区分,和能区分,还能分成是否能有空箱子,所以一共是8种情况,我们现在来一一讨论. 1.球同,盒不同,无空箱 C(n-1,m-1), n>=m 0, n 使用插板法:n个 ...

  8. n个小球放入m个盒子中_N个球放入M个盒子中的情况分析

    对于情况分析,主要参考: 本文只是对参考链接的简单"复制",最多会有比较详细的解释,不会有什么新的东西该类问题涉及到三个因素,分别是球是否有区别.盒子是否有区别.盒子是否可以为空. ...

  9. 3个小球放入4个盒子

    每个盒子最多1个球的概率 第一个小球有4种放法,第二个有3种放法,第三个有2种放法 共有:4 x 3 x 2 = 24 种放法. 总的放法:4 x 4 x 4 = 64 24 / 64 = 3 / 8 ...

  10. [ACM] POJ 1664 放苹果(n个相同小球放入m个相同盒子)

    放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 25952   Accepted: 16509 Description ...

最新文章

  1. Java中的String、StringBuilder、StringBuffer
  2. 【公司金融课堂学习笔记】2、企业融资—风投如何影响企业价值
  3. 导出全部记录到excel
  4. http有哪些请求方法
  5. 30 ArcGIS 许可管理器常见问题(持续更新中……)
  6. 硬盘突然提示没有初始化_新硬盘的分区
  7. 一元三次方程求解(信息学奥赛一本通-T1238)
  8. Redis面试 - redis 的雪崩和穿透?
  9. oracle查询数据库日志大小,Oracle的日志缓冲区大小查询方法———学习笔记 | 学步园...
  10. ae运动模糊怎么调整_如何快速成长为一名AE高手?
  11. 调整地面材质_家用浴室柜台面什么材质好?Pvc和大理石选哪个合适?
  12. 解决Navicat连接MySQL总是报错1251的方法
  13. mysql,oracle,sql server数据库默认的端口号,端口号可以为负数吗?
  14. Convert Sorted Array to Binary Search Tree(将有序数组转为二叉搜索树)
  15. 借助excel工具进行多元线性回归模型的建立及案例分析
  16. Ubuntu 字符终端
  17. 为什么建议大家使用 Linux 开发?真的很很很优雅!
  18. rangeOfString用法
  19. Sql Server 指定日期所在周的第一天和最后一天
  20. python对erp系统有帮助吗_ERP系统的优点

热门文章

  1. 固态硬盘数据丢失能恢复吗?含泪分享:固态硬盘数据恢复方法
  2. DDNS请求到底请求了什么
  3. Vue基础语法之@click、时间修饰符@click.stop与@click.prevent、按键修饰符(如@keyup.enter)
  4. 【5G NR】SSB
  5. flash网页播放器
  6. java 项目骨架,maven项目中骨架
  7. Android Lolipop AssetAtlasService引起的系统崩溃
  8. 安装ie9提示未能完成安装_win7系统32位旗舰版,IE8升级IE9失败,提示未能完成安装...
  9. 用php 用拼出一个菱形_用php语言编程:输出一个由“*”符号组成的菱形图形(必须使用for循环语句)...
  10. whisper客服源码_以太坊源码分析—Whisper