wzh

wzh

我想有那么一段时光,可以在面朝大海的房车里煮上一杯咖啡,看看曾写过的代码

列出从 n 个不同元素中选择 k 个元素的所有可能组合

本文发布于:2024-08-10
function generateCombinations(elements, k) {
    const combinations = [];

    function combine(start, combo) {
        if (combo.length === k) {
            combinations.push(combo.slice()); // 复制当前组合并添加到结果数组中
            return;
        }

        for (let i = start; i < elements.length; i++) {
            combo.push(elements[i]);
            combine(i + 1, combo); // 递归调用
            combo.pop(); // 回溯,移除最后一个元素
        }
    }

    combine(0, []);

    return combinations;
}

// 示例
const elements = [1, 2, 3, 4, 5];
const k = 3;

const allCombinations = generateCombinations(elements, k);
console.log(allCombinations);

 

解释
函数 generateCombinations:接受两个参数,elements 是包含所有元素的数组,k 是要选择的元素数量。
函数 combine:这是一个递归函数,用于生成所有可能的组合。它有两个参数,start 表示当前递归的起始索引,combo 表示当前正在构建的组合。
递归逻辑:
当 combo 的长度达到 k 时,将 combo 的副本添加到结果数组 combinations 中。
对于从 start 开始的每一个元素,将其加入到 combo 中,然后递归调用 combine。
递归完成后,从 combo 中移除最后一个元素,回溯到上一步。

wzh

wzh

我想有那么一段时光,可以在面朝大海的房车里煮上一杯咖啡,看看曾写过的代码

联络

  • EMail: qihui658[at]qq.com

标签

链接