n个小球放入m个盒子中_N个球放入M个盒子中的情况分析
对于情况分析,主要参考:
本文只是对参考链接的简单“复制”,最多会有比较详细的解释,不会有什么新的东西该类问题涉及到三个因素,分别是球是否有区别、盒子是否有区别、盒子是否可以为空。所以大概可以将该问题分为以下八种情况:1.将n个无区别的球放入m个无标志的盒中,没有一个盒子为空,有多少种情况?
2.将n个无区别的球放入m个无标志的盒中,盒内数目不限制,有多少种情况?3.将n个无区别的球放入m个有标志的盒中,没有一个盒子为空,有多少种情况?
4.将n个无区别的球放入m个有标志的盒中,盒内数目无限制,有多少种情况?5.将n个有区别的球放入m个无标志的盒中,没有一个盒子为空,有多少种情况?
6.将n个有区别的球放入m个无标志的盒中,盒内数目不限制,有多少种情况?
将n个无区别的球放入m个无标志的盒中,没有一个盒子为空,有多少种情况?
解释
这里肯定要假设球的个数n要大于盒子的个数m,否则的话,必然有盒子是空的。
记录此时的情况个数为$P_{m}(n)$。由于此时任何一个盒子都不能是空的,所以必然有m个球放在了这m个盒子中,并且由于是无区别/无标志,所以这只有一种情况,也就是说$P_m(m)==1$。剩下的球怎么分等下再说,这个前提得有。
这里给出结论:
$P_m(n) = P_1(n-m) + P_2(n-m) + … + P_{n-m}(n-m)$
这里给出第一项的解释:在这m个盒子中任何1个盒子中要装上这n-m个球。
除了$P_m(m)==1$之外还有$P_{m-1}(m)==1$和$P_1(1)==1$,具体不在解释。
代码实现1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38* @param n N个球
* @return int 次数
*/
int (int m, int n)
{
if (m > n)
{
return -1;
}
if (m == 1 || m == n || m == n - 1)
{
return 1;
}
int count = 0;
for (int i = 1; i <= n - m; i++)
{
count += p(i, n - m);
}
return count;
}
int ()
{
int N, M;
std::cout << "input the number of boxes(M): ";
std::cin >> M;
std::cout << "input the number of balls(N): ";
std::cin >> N;
std::cout << "count is: " << p(M, N) << std::endl;
}
将n个无区别的球放入m个无标志的盒中,盒内数目不限制,有多少种情况?
解释
貌似不是特别好想,直接给出结论,$P_{m}(n+m)$
代码实现,略
将n个无区别的球放入m个有标志的盒中,没有一个盒子为空,有多少种情况?
$C_{n-1}^{m-1}$1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63// 主要是如何计算排列组合
/**
* @brief 计算
*
* @param m
* @param n
* @return int
*/
int n_arragement(int n, int start_n, int start_arragement)
{
// 不进行某些判断了
int result = start_n > 1 ? start_arragement : 1;
int start_i = start_n > 1 ? start_n + 1 : 1;
for (; start_i <= n; start_i++)
{
result *= start_i;
}
return result;
}
/**
* @brief 计算n个无区别的球放入m个有区别的盒子中有几种方法(不允许有空盒子)
*
* @param m M个盒子
* @param n N个球
* @return int 次数
*/
int p(int m, int n)
{
// 不进行某些判断了
/**
* $C_{n-1}^{m-1} = frac{(n-1)!}{(n-m)! * (m-1)!}$
*
*/
int part1, part2, part3 = 1; // (n-1)! larger smaller
if(n-m < m-1){
part3 = n_arragement(n-m, 1, 1);
part2 = n_arragement(m-1, n-m, part3);
part1 = n_arragement(n-1, m-1, part2);
} else {
part3 = n_arragement(m-1, 1, 1);
part2 = n_arragement(n-m, m-1, part3);
part1 = n_arragement(n-1, n-m, part2);
}
return part1 / (part2 * part3);
}
int main()
{
int N, M;
// std::cout << n_permutation(5, 3, 6) << std::endl;
std::cout << "input the number of boxes(M): ";
std::cin >> M;
std::cout << "input the number of balls(N): ";
std::cin >> N;
std::cout << "count is: " << p(M, N) << std::endl;
}
将n个无区别的球放入m个有标志的盒中,盒内数目无限制,有多少种情况?
$C_{m+n-1}^{m-1}$
将n个有区别的球放入m个无标志的盒中,没有一个盒子为空,有多少种情况?
略, $S(N, M)$ –第二类斯特林数
将n个有区别的球放入m个无标志的盒中,盒内数目不限制,有多少种情况?
略,$S(N, 1) + S(N, 2) + S(N, 3) + … + S(N, M)$
将n个有区别的球放入m个有标志的盒中,没有一个盒子为空,有多少种情况?
略,$M! * S(N, M)$
将n个有区别的球放入m个有标志的盒中,盒内数目不限制,有多少种情况?
$m^n$
n个小球放入m个盒子中_N个球放入M个盒子中的情况分析相关推荐
- n个小球放入m个盒子中_n个球放入m个盒子的几种情形讨论
科技教育创新 情形 1 :将 n 个相同的球放到 m 个不同的盒子中 问 : (1) 每个盒子至少有一球的不同放法 (n ≥ m); (2) 如果允许有空盒子的不同放法 ; (3) 求此种情形下 (1 ...
- n个小球放入m个盒子中_M个球放入N个盒子的放法
M个球放入N个盒子的放法 1.N个盒子编号为1到N, 把M个相同的球放入这N个不相同的盒子,问共有多少种放法. M个球分成了N组,即装入N个盒子.如果要求每个盒子至少有一个球,则要求M>=N. ...
- n个小球放入m个盒子中_N个小球放进M个盒子算法
N个小球放入M个盒子共有多少种方法,并输出的算法设计: 算法思路1 :暴力填充盒子 每个小球都可能放入M个盒子的任意一个,所以直接根据小球个数做递归即可,然后将存储放入hash中排重 //TODO 算 ...
- n个小球放入m个盒子中_联考数学复习指导:M个球放入N个盒子
为了广大学员能够更好的备考2015年考研, 特收集了联考数学指导:M个球放入N个盒子,希望对各位考生有所帮助. M个球放入N个盒子的放法 N个盒子编号为1到N, 把M个相同的球放入这N个不相同的盒子, ...
- n个小球放入m个盒子中_【转】排列组合 n个球放入m个盒子m问题 总结
球,盒子都可以分成是否不能区分,和能区分,还能分成是否能有空箱子,所以一共是8种情况,我们现在来一一讨论. 1.球同,盒不同,无空箱 C(n-1,m-1), n>=m 0, n 使用插板法:n个 ...
- 8个球放入3个盒子方式_球放进盒子问题(8种, 可变形)
http://blog.sina.com.cn/s/blog_3f2c3d220100d57q.html 假设有m个小球,放入n个盒子里(),有几种放法? (1)盒子不同,球不同,允许有空. 由于每个 ...
- 排列组合 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个盒子“里,再来一遍
1.球同,盒不同,无空箱 C(n-1,m-1), n>=m 0, n<m 使用插板法:n个球中间有n-1个间隙,现在要分成m个盒子,而且不能有空箱子,所以只要在n-1个间隙选出m-1个间隙 ...
最新文章
- linux diff patch 生成和打补丁
- 诗与远方:无题(三十八)
- dovecot 不用mysql,dovecot+mysql 收件服务 和 空壳邮件
- 每天一道机器学习算法面试题目
- HTML/CSS面试题(收集)
- mysql英文版怎么调中文_navicat for mysql怎么设置中文
- 数据结构:八大数据结构分类
- 【06月25日】指数估值排名
- 2017新型智慧城市建设的五“新”级策略
- java 唐胡子_长沙.NET社区之光
- 小米airdots2蓝牙耳机连上手机后没有声音
- 如何查看服务器证书过期时间,如何看ssl证书过期
- Outlook 阿里邮箱 重复收取邮件 的情况 及解决方案
- 基于Go语言Echo+Vue+ElementUI的OA办公系统
- 让每个3D建模师都心动的:超详细人体结构构图分析
- iOS底层原理:weak的实现原理
- 内核——eCos内核概览
- 什么是启发式算法(heuristic algorithm)?
- c语言程序设计 李俊,深入浅出C语言程序设计(第2版)习题集和编程指导
- 全新轻量级ViT!LVT:具有增强自注意力的Lite视觉Transformer
热门文章
- 【转】360的“投名状”:400小分队直通周鸿祎 员工打了鸡血
- sql concat()函数
- 在深圳龙岗,看见空间智能化的潮水涌动
- oracle between和比较符,Oracle Between子句
- Windows Subsystem for Android 安装<简化向>
- 【腾讯Bugly干货分享】React Native项目实战总结
- error 1327. Invalid drive: d:\的解决办法
- r语言与多维统计_Kaukatcr:多维空间语言设计的实验
- matlab转子位置检测,一种基于反电势的永磁同步电机转子位置检测新方法
- PMSM中常用的两种坐标变换——Clarke变换