【发布时间】:2016-10-19 14:16:18
【问题描述】:
我需要一个算法,它会从 6 个字符的列表中生成 2 个 3 个字符的列表。例如,我有一个包含 [a,b,c,d,e,f] 的数组,我想创建诸如 [a,b,c][d,e,f] 之类的组合。
我需要得到 2 乘以 3 个字符的所有可能组合。
约束
- 两个组合不能相同。我的意思是我不能以不同的顺序将 2 次相同的 3 个字符放在一起。因此,如果
[a,b,c][d,e,f]已经生成,我不能将[b,a,c][f,d,e]作为另一种可能性或[f,d,e][b,a,c]。
如果算法是在 javascript 中,我最理想,但我愿意接受任何其他建议(我可以阅读代码,即使我不知道我最有可能理解算法的语言一种我不懂的语言)。我看过很多关于排列和组合的帖子和问题,但似乎没有一个是我想要的,我似乎无法弄清楚如何修改它们以适应我正在寻找的东西。
【问题讨论】:
-
这听起来很像家庭作业问题。考虑自己如何解决这个问题。你有一个包含 6 个元素的集合。你能把它们分类吗?如果是这样,从 6 中选择的 3 的排列是 120 种组合,这不是极端的。因此,如果您生成一个列表,然后对其进行排序,您可以与现有列表进行比较并获取同构排列集。 (您也可以通过几种方式进一步优化)编辑:您必须扩展这个想法以收集两个列表
-
我知道这听起来像是家庭作业,但更像是自学作业。我需要这样做以轻松地为运动时间表生成团队,其中 2 个团队永远不会相同。学校或工作不要求我这样做。只是调度的负责人是手工做的,我想知道如何自动生成这样的调度来节省时间。我主要是出于好奇和更好地了解此类算法而询问。
-
这两个组合是否必须包含唯一字符?也就是可以
[a,b,c][c,d,e]吗?
标签: javascript arrays algorithm combinatorics