【发布时间】:2021-05-20 19:37:05
【问题描述】:
从昨天开始我就一直在尝试完成这个,虽然还没有运气。我找到了解决方案,但我想要完成的任务总是略有不同。
我试图获得所有可能的组合,有点像这样:combination_k,但我也希望相同的项目与自身配对,所以给出以下内容:
输入[1, 4, 5] 和2(组合数)应返回:
[1, 1], [1, 4], [1, 5], [4, 4], [4, 5], [5, 5]
输入 [1, 4, 5] 和 3 应该返回:
[1, 1, 1], [1, 1, 4], [1, 1, 5], [1, 4, 4], [1, 4, 5], [4, 4, 4], [4, 4, 5], [5, 5, 5], [5, 5, 4], [5, 5, 1](顺序不重要)。
我一直在调整combination_k,它让我足够远,它可以与2一起使用,但是当我提供3作为参数时它就不起作用了。
const combinations = getAllCombinations([1, 4, 5], 2);
// combinations = [1, 1], [1, 4], [1, 5], [4, 4], [4, 5], [5, 5]
欢迎任何提示!
【问题讨论】:
-
你能发布你为实现 2 所做的工作吗?
-
为什么
[1, 5, 5]不在您的预期输出中? -
是的,我已经做了几件事,但实现这一目标的最简单和最短的方法是将第 121 行更改为
tailcombs = k_combinations(set.slice(i), k - 1);@combination_k -
@Nick 我看到我错过了那个,哎呀!我已经编辑了我的初始帖子并将该项目添加到预期列表中。
-
Here is a dynamical programming solution with no recursion。 JS中的递归在一定范围后可能会导致调用栈溢出问题。
标签: javascript arrays