java - 将列表列表随机分组为 N 个子集,每个子​​集有 K 个元素

标签 java algorithm random

<分区>

我有以下列表列表 List>

1 2
3
4 5 6
7
8
9
10

我必须将这个列表列表随机分组为 3 个子集,每个子​​集有 4 个元素(没关系,在最后一个子集中我将有少于 4 个元素),并且在每个子集中我不能有来自同一行的元素(我例如不能有 3 4 5 7)。基本算法应该是什么????

最佳答案

What should be the basic algorithm????

从列表列表的前四个1随机选择的非空列表中的每一个中选取四个随机元素。删除所选项目,并为下一个子集重复。随时删除空列表。

接下来,您需要注意并非所有输入都是可解的:

1
2
3
4
5 6 7 8 9

在这种情况下,我们随机选择

1*
2*
3*
4
5 6 7 8 9*

-> 7 1 2 3(随机选择)

[]
[]
[]
4*
5 6 8 9*

-> 5 4 。 . <- 呃,即使非空列表仍然存在,也不可能从不同的列表中选择四个项目。您可以在迭代期间检测到这一点。

1:或者,如果剩余的非空列表少于四个,则从所有列表中随机选择。

关于java - 将列表列表随机分组为 N 个子集,每个子​​集有 K 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18192019/

相关文章:

java - Spring 长轮询

python - Numpy中的线段相交算法

algorithm - 反转 LUT(查找表)

python - 在python中生成超出范围的随机数

python - 猜谜游戏中输入多个相同的数字;循环停止工作?

java - 从websphere迁移到tomcat后无法访问wsdl文件

java - Android TextView 和 ProgressBar 未显示在 LinearLayout 中

java - 如何将第一个字符更改为数字?

algorithm - 使用多项式时间的 "hardest"问题是什么?

java - 随机数无法解析为类型 - Java 本身的拼写错误