如何解决查找数字的变化
很抱歉,我不知道该标题的正确名称,因为我不知道这个问题属于哪个主题。
例如,有5个人。他们想留在旅馆里。这家酒店每间客房最多只能容纳2位房客,而每间客房最多只能容纳1位房客。这意味着这种住宿可能会有一些变化。
- 1-1-1-1-1(每人1个房间)
- 1-2-2(一个人一个人住,另外四个人分成2个房间)
- 1-1-1-2(...依此类推)
找到这些变异的算法是什么?
解决方法
您可以考虑上述问题,类似于硬币找零问题,在这里您拥有总和和硬币,并且必须找到使用这些硬币进行总和的方法。
此处: 硬币= {1,2} sum =人数
,这是一个组合问题,抽象版本通常称为“球和垃圾桶”。一个关键问题是这些球是否可以区分。垃圾箱也一样。
在您的示例中,球是人,垃圾箱是房间。如果房间可区分,那么您还需要可用的总数。
让我们说两者都不是可区分的。然后唯一的问题是我们有多少对,选项是0、1或2,所以有3个解。
如果人们可以区分但房间不是可分辨的(球而不是垃圾箱),那么我们关心的是谁。在这种情况下1-1-1-1-1有一个解决方案,1-1-1-2有select(5,2)= 10个解决方案(我们可以选择孤对中的所有方式),并且1-2-2具有choice(5,2)* select(3,2)/ 2 = 10 * 3 = 30个解决方案(选择第一对中的谁,然后第二对,然后除以2,以避免重复计算)顺序相反的地方)。解决方案总数:41。
如果人和房间都可以区分,那么对于上述每个解决方案,我们都在乎每个人或一对进入哪个房间。这将取决于可用房间的总数。如果存在R个房间,则使用无法区分房间的r个房间的解决方案将需要乘以R!/(R-r)!。
例如1-1-1-2有10个房间无法区分的解决方案。如果酒店有5间客房,那么我们乘以5!/(5-4)! = 120可获得1200个解决方案。
如果人们是a,b,c,d,e,并且有5个房间分别称为1,2,3,4,5,那么将b + d配对的解决方案配对,a在房间1中,并且c在房间2中:
a1,c2,e3,bd4
a1,bd5
a1,e4,bd3
a1,e5,bd4
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。