【发布时间】:2011-05-03 23:38:57
【问题描述】:
这是我想要做的:
我正在制定一个计划,其中一部分应该做的是将一大群人分成若干组(给定特定数量的参与者/组)。但是,每个人必须恰好通过每个组一次(顺序无关紧要),我想尽量减少一起通过不同组的人数。
到目前为止,我已经能够创建一个树结构,它的根分支为每个组的一个节点,每个组都分支为所有其他组(父组除外)的节点,每个分支进入剩余组的节点(除了父级,或父级的父级等)。
这可以在下面可视化(给定 5 个组——A、B、C、D、E):
Level 1: A B C D E
Level 2: B C D E A C D E A B D E A B C E A B C D
Level 3 (for node E only) : BCD ACD ABD ABC
etc. (with n levels for n groups)
每个级别代表所有参与者的一个分组,每个级别的每个参与者都必须在一个组中。
在我的程序中,每个人当前都表示为一个整数,存储在一个 ArrayList 中。整个 ArrayList 从根开始,然后在每个节点(在上面的示例中,第一级 5 个组,第二级 4 个等)被(随机)分成偶数组,直到树的末尾(当每个参与者已通过每组一次)。我目前正在递归实施。
我无法弄清楚如何确保每个级别的每个组中的参与者数量相等(或相差一个)。当参与者的数量等于最后一层的节点总数(或其倍数)时,这很容易,但如果不是这种情况(并且在每个节点上,参与者不会均匀地划分为子节点的数量)。
我不是在寻找特定的代码来解决这个问题,我只是想知道如何确保每个级别的组大小均匀(尤其是一个可以处理大量输入的参与者和组的解决方案)。
提前感谢,如果我不清楚,请告诉我(因为我发现很难描述我的问题)!
【问题讨论】:
标签: java sorting tree grouping