algorithm - 速配算法

标签 algorithm language-agnostic permutation combinations

我在一家咨询机构工作,大部分时间都在客户所在地。因此,我很少见到我的同事。为了更好地了解彼此,我们将安排一次晚宴。会有很多小 table 供人们聊天。为了在聚会期间与尽可能多的不同的人交谈,每个人都必须每隔一段时间(比如每小时)换一次 table 。

如何编写创建表切换计划的程序?只是给你一些数字;在这种情况下,大约有 40 人,每 table 最多可容纳 8 人。但是,算法当然需要通用

最佳答案

这是一个想法
第一人称视角的第一部作品..就叫他X吧
X 必须会见房间里的所有其他人,所以我们应该将剩余的人分成 n 组(其中 n = #_of_people/capacity_per_table )并让他每次迭代都坐在其中一组
既然已经照顾了X,我们再考虑下一个人Y
WLOG Y 是 X 在第一次迭代中必须与之坐在一起的人..所以我们已经知道 Y 在那个时间范围内的表组..然后我们应该将剩余的人分成几组,这样每个组在每个连续的时间都与 Y 坐在一起迭代..并且对于每次迭代,X 的组和 Y 的组没有共同点
.. 我想,如果你继续做这样的事情,你会得到一个最佳解决方案(如果存在的话)

或者,您可以通过给每个人一张卡片来解决问题,他们可以在卡片上写下与他们共进晚餐的所有人的名字。在事件结束时,向获得卡片的人赠送某种奖品他们名片上的大多数名字

关于algorithm - 速配算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/968673/

相关文章:

c++ - 在定点类型上实现模数

java - 使用 1 个数组实现 3 个堆栈,此代码是否有效?

algorithm - 瓦片的成对匹配

algorithm - 是否有计算距离排列的算法?

python - 如何生成范围内所有可能排列的列表

algorithm - 为什么不把父指针保存在 "B+ Tree",方便树向上遍历?

algorithm - 广度优先搜索生成的节点数是多少?

language-agnostic - 基于 TCP/IP 的语音通信

algorithm - 如何在 O(2^n) 内存和 O(2^n *n) 时间中检查哈密顿行走是否存在

r - 生成 0 和 1 排列的有效方法?