n个小球放入m个盒子中_排列组合中的“分组分配”问题最全详解

a9e81c1fb32935251bc432d6633a1fcc.png

d1be2ba5f7ce5059242a53a1eecd4f96.png

不同种元素

分组问题 将n个不同元素按照某些条件分成k组,称为分组问题。分组问题有平均分组、不平均分组、和部分平均分组三种情况。

1. 平均分组

ca86ae98bc9d54d16cb88225b0ece2f7.png

be70d537a873fe7eb0b5ef73f18ecee0.png

bcd2b438b8c70349fc98290b83a5ab34.png

d1197976dfc0c7d18ea9d7abb5fb856f.png

795db81e1152eba2bda0ffbec38cd59c.png

1

2. 不平均分组

fb1873ca8c6c66ebd77969f094361b86.png 27a4b51a8566b0800d0967e0d22737ee.png

2

3. 部分平均分组

3f85801cfc83951354d7d4c628afebe7.png

13c5133066a2688eda3b2938500a2f8a.png

3

分配问题:

如果把不同的元素分配给几个不同对象,并且每个不同对象可接受的元素个数没有限制,那么实际上是先分组后分配的问题,即分组方案数乘以不同对象数的全排列数。

所以针对分配问题,需要遵守的原则是:先分组,后分配

2bd0a1231f39514aa259c74f8595b62b.png

540d911ead2d803032c4d4d2fd41239c.png

a9e81c1fb32935251bc432d6633a1fcc.png

d1be2ba5f7ce5059242a53a1eecd4f96.png

同种元素

分组问题:

1ede46a97715568f3b934f980c850c18.png

ae38cb574c6bab23da23b589262be4bf.png 98800ffb2517c7bde4149851d4827d57.png

a5650401da1c6710deb579b29510e1fc.png

1

分配问题:

对于同种元素的分配问题,通常有两种解法:常规法和隔板法

dd80781bd35ec87c285d09cd7d62b63b.png 常规法: a0db38210c08cc8715b8e86a471807e9.png 隔板法:

d90d66882e7228a3f9df8a65dfb20465.png

12c3a84b9c56f4bd70d6368615e99de3.png c3ca8bb92ab21c712af0c9e616e06d55.png d549b041b9fb3133679483d61876e5ec.png

032cc17d72874410d7a31391073816cb.png

8178a4be9fad497ca7fcc9492e44691c.png

常规法:

434da2f88625228290a7b3523cd902cc.png

0b66a8042d052dbc96b2998d9a3d559b.png

隔板法:

931bfbabc8f2e79727ded55df3552b38.png

a9e81c1fb32935251bc432d6633a1fcc.png

d1be2ba5f7ce5059242a53a1eecd4f96.png

经典练习题

1:将五位老师分到三个学校任教,每个学校至少分一位老师,总共有多少种分法。(答案:150种)

2:有4个不同小球放入4个不同盒子,其中有且只有一个盒子留空,有多少种不同放法?(答案:144种)

3:7个人参加义务劳动,选出6个人,分成2组,每组都是3个人,有多少种不同分法?(答案:70种)

4:10个三好学生名额分到7个班级,每个班级至少一个名额,有多少种不同分配方案?(答案:84种)

5:现有7个完全相同的小球,将它们全部放入编号为1,2,3的三个盒子中

(1)若每个盒子至少放一个球,共有多少种不同的放法?(答案:15种)

(2)若允许出现空盒,共有多少种不同的放法?(答案:36)

6:现有12个相同的小球,将它们全部放入编号为1,2,3,4的四个盒子中,要求每个盒子中的小球个数不小于其编号数,问不同的放法有多少种?(答案:10)

来源:高中数学王晖 如有侵权请联系删除

更多学习资料按照下方提示可轻松获取哦......

获取学习资料途径

方式1:关注公众号《朱智祥数学》,在公众号主页底下对话框发送关键词“学习资料”,获取下载链接!

de71bf5335a0b8dc25cac3f087182700.png14e5cc75ee6ee958d03c05afafa0e329.png

方式2:加入“高中数学资料分享”群(704059989)

4249a6497931bcfa041b64b822dcae1e.png

                              

96fc851e2584da800d83476b10c4c4dd.gif

如何提高计算能力?

谈谈高中生如何记笔记这个事

最全高中数学思维导图,高中生必须人手一份

高中数学终极版知识秘籍(务必收藏)

11月份最新高一高二期中考试题共140套(可下载)

高考数学选择题解题技巧:小题小做,不择手段

2016-2020近五年全国高考数学卷考点分布表

【基础夯实】高中数学新教材必修一第四章指对函数微课62节

           温馨提示

最近微信官方改变了公众号推送规则,不是按更新时间顺序排了。

所以想要第一时间收到《朱智祥数学》的推送,你可以每次读完后点个“在看”,或者“星标”,这样《朱智祥数学》才会第一时间出现在你的订阅列表。

点个“在看”,只要你想看,我们都在。

点个“往期推荐”,查看往期精彩文章。

   3881fe73e40f7f5c63999498a077c435.gif
arrb[i]表示第i个盒子是否已经放入小球(1表示已经放入,0表示未放入)。现在需要找到一个未被检查过的盒子,将小球放入,使得放入小球后,所有盒子放入小球的数量都不相同。若存在多个未被检查过的盒子都可以满足要求,则选择编号最小的盒子放入小球。 解决思路: 1.遍历数组arrb,将所有已经放入小球盒子对应的位置在数组arra标记为1; 2.遍历数组arra,找到第一个未被检查过的盒子,标记为当前最小盒子; 3.从最小盒子开始,向后遍历数组arra,找到第一个未被检查过的盒子,将其标记为当前比当前最小盒子放入小球后,放入小球的数量最少的盒子; 4.继续遍历数组arra,找到所有未被检查过的盒子放入小球后,放入小球的数量最少的盒子; 5.将小球放入最终找到的盒子,更新数组arrb对应位置的值为1,表示该盒子已经放入小球; 6.返回最终找到的盒子编号。 代码实现: int findBox(int n, int a, int* arra, int* arrb) { int minBox = -1; //当前最小盒子 int minNum = INT_MAX; //放入小球后,放入小球的数量最少的盒子小球数量 int numCount[n + 1]; //用于记录每个盒子放入小球的数量 memset(numCount, 0, sizeof(numCount)); //初始化为0 for(int i = 1; i <= n; i++) { if(arrb[i] == 1) { arra[i - 1] = 1; //标记为已经检查过 numCount[i]++; //更新放入小球的数量 } } for(int i = 0; i < n; i++) { if(arra[i] == 0) { //找到第一个未被检查过的盒子 minBox = i + 1; break; } } for(int i = minBox + 1; i <= n; i++) { //从最小盒子开始遍历 if(arra[i - 1] == 0) { //找到未被检查过的盒子 int ballNum = numCount[i]; //放入小球后,放入小球的数量 if(ballNum < minNum) { //更新放入小球后,放入小球的数量最少的盒子 minBox = i; minNum = ballNum; } } } for(int i = minBox + 1; i <= n; i++) { //继续遍历数组arra,找到所有未被检查过的盒子放入小球后,放入小球的数量最少的盒子 if(arra[i - 1] == 0) { int ballNum = numCount[i]; if(ballNum == minNum) { minBox = i; } } } arrb[minBox] = 1; //将小球放入最终找到的盒子 return minBox; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值