【发布时间】:2016-02-19 10:20:36
【问题描述】:
我正在构建一个应用来测试不同的图标。管理员上传多个图标并输入必须同时显示多少个图标。然后应用程序会按顺序显示所有可能的图标集,直到显示所有图标组合。
现在,我需要一个函数来生成基于两个数字的所有唯一图标组合:
- 图标总数 (i)
- 每组图标的数量
如果 i = 6 和 s = 3,我希望输出如下所示:
[
[1, 2, 3],
[1, 2, 4],
[1, 2, 5],
[1, 2, 6],
[1, 3, 4],
[1, 3, 5],
[1, 3, 6],
[1, 4, 5],
[1, 4, 6],
[1, 5, 6],
[2, 3, 4],
[2, 3, 5],
[2, 3, 6],
[2, 4, 5],
[2, 4, 6],
[2, 5, 6],
[3, 4, 5],
[3, 4, 6],
[3, 5, 6],
[4, 5, 6],
]
要求:
- 所有集合都必须是唯一的
- 一个数字在一组中只能出现一次
我一直在尝试编写一个递归函数,但我没有任何东西可以展示。我无法理解它:(
【问题讨论】:
-
我认为这几乎可以回答您的确切问题:mennovanslooten.nl/blog/post/51
-
你能粘贴一个你有的代码吗?
-
@Jamiec 分享的链接很好。你可以在这里测试:experiments.mennovanslooten.nl/2007/combinator/combinator.html 如果你把 6 和 3 并按下按钮,你会得到组合。
-
我不会将此问题视为 javascript - 它只是您请求的组合算法。您可以在 Google 中找到它
-
一个递归的 fn 将破坏堆栈,即使是适度的数据集也不用蹦床,但是你去rosettacode.org/wiki/Combinations#JavaScript
标签: javascript algorithm