【发布时间】:2013-12-05 17:49:35
【问题描述】:
给定 n 个用户 (u_1, u_2,..., u_n) 和 k 个组 (g_1, g_2, ..., g_k),创建所有组的所有可能组合。基本上,最后每个组合都是一个Map
会有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既是递归的又是迭代的。递归,因为您需要将旧地图传递给新的迭代。就是这样。
【问题讨论】:
-
您的问题没有说明您为尝试解决问题所做的工作;它目前读起来像是对代码的请求。请分享您尝试的实施,并说明它如何无法满足您的要求。
-
你应该使用 Prolog 来处理这样的事情 :P 但我猜这是一个家庭作业,你至少应该展示你到目前为止所做的尝试
-
是的,我们可能可以提供一种快速的方法!但是你做了什么?
-
为什么用户不一样?请出示问题说明。
标签: java algorithm combinations