【发布时间】:2020-08-09 06:36:20
【问题描述】:
我正在尝试在 Javascript 中实现某种数学组合,但可以找到最好的方法。
我想要实现的是从 N 中找到组合的总和(由 3 个元素组成)。
例如,我怎样才能找到由 5 个元素中的 3 个组成的所有可能组合的总和?
手动显示如下:
选择:A、B、C、D、E - 都是数字
所有可能的 5 个组合中的 3 个如下:
ABC ABD ABE ACD ACE ADE BCD BCE BDE CDE
ABC 表示A * B * C
组合的简化形式如下所示:
AB(C+D+E) + AC(D+E) + ADE + BC(D+E) + BDE + CDE。
我尝试了以下代码,但没有成功:
function calc(arr) {
var total = 0;
for (let i = 0; i < arr.length; i++) {
let sum = 0;
for (let j = i + 1; j < arr.length; j++) {
sum += arr[j] + arr[j + 1] + arr[j + 2];
}
total += sum * arr[i] + arr[i + 1] + arr[i + 2];
}
return total;
}
var arr = [2, 3, 4, 5, 6];
console.log(calc(arr));
【问题讨论】:
-
您昨天询问了same question,它已关闭。副本提到如何从长度为 n 的数组创建大小为 k 的子集。找到子集后,将子集中的项目相乘并对所有子集求和。您还没有努力在代码中实现组合部分。