相关疑难解决方法(0)

找到将元素列表拆分为相同大小的给定数量的组的所有可能方法

我有一个元素列表,我想要一个对象,它给了我所有可能的方法将这些元素分成给定数量的相同大小的组.

例如,这是我的清单:

MyElements <- c(1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

我希望所有可能的组合将它们分成两组:

nb.groups <- 2
Run Code Online (Sandbox Code Playgroud)

答案可能是这样的:

[[1]]

[1] 1,2

[2] 3,4

[[2]]

[1] 1,3

[2] 2,4

[[3]]

[1] 2,3

[2] 1,4
Run Code Online (Sandbox Code Playgroud)

我想避免重复那种:

[[1]]

[1] 1,2

[2] 3,4

[[2]]

[1] 3,4

[2] 1,2
Run Code Online (Sandbox Code Playgroud)

非常感谢 !

谢谢你的回答.我想我应该给你更多关于我想要实现的信息.

列表(或矢量,因为显然MyElements是一个向量)实际上是个人的ID号.我想要一个列出所有可能的方法,将这些个体分成所需数量的组,这些组都具有相同的大小.

如果我没有弄错的话,目前唯一可行的解​​决办法就是朱巴所谓的暴力和肮脏的解决方案.但正如朱巴所说,它很快(为了我的目的太快了!)无法使用.

再次感谢

r

6
推荐指数
1
解决办法
1692
查看次数

创建将 n 个用户放入 k 个组的所有可能方法

给定 n 个用户 (u_1, u_2,..., u_n) 和 k 个组 (g_1, g_2, ..., g_k),创建所有组的所有可能组合。基本上,最后每个组合都是一个Map<Integer,Integer>,其中第一个Integer是用户ID,第二个Integer是组ID。例如,[(u_1,g_1), (u_2,g_1).. ..,(u_n, g_1)] 是一种可能的组合。

将有 k^n 个组合。

我搜索并看到了类似的问题,但他们确实有一些不适用于我的问题的额外条件。就我而言,每组都没有限制,也没有均匀分布。

您能建议一种在 Java 中执行此操作的快速方法吗?

谢谢

到目前为止我的尝试:我尝试为每个用户的每种可能性创建一个 for 循环,但我面临无法定义 for 循环次数的问题。

所以我切换到递归,但坚持为函数的内部调用创建参数。不过仍在努力。

请注意,这不是“n 选择 k”。“n选k”是指所有用户都相同的情况,但这里的用户显然不相同。


好的。我为此创建了一个解决方案。基本上,这是一个动态规划问题。假设您已经为 j 个用户和 k 个位置创建了一个地图列表(组合)。要为 j+1 个用户和 k 个位置创建,需要 2 个循环:对于每个 Map,对于每个 i=1 到 k,Map.put(user_j+1, k))。Is 既是递归的又是迭代的。递归,因为您需要将旧地图传递给新的迭代。就是这样。

java algorithm combinations

4
推荐指数
1
解决办法
5915
查看次数

标签 统计

algorithm ×1

combinations ×1

java ×1

r ×1