C++给定5个数,输出所有可能的组合

要在 C++ 中输出给定 5 个数的所有可能组合,可以使用递归或迭代的方式生成组合。这里提供一个使用递归的方法来实现这一目标:

示例代码

cpp
#include <iostream> #include <vector> void generateCombinations(const std::vector<int>& nums, std::vector<int>& combination, int start, int k) { if (combination.size() == k) { // 输出当前组合 for (int num : combination) { std::cout << num << " "; } std::cout << std::endl; return; } for (int i = start; i < nums.size(); ++i) { combination.push_back(nums[i]); generateCombinations(nums, combination, i + 1, k); combination.pop_back(); } } int main() { std::vector<int> nums = {1, 2, 3, 4, 5}; // 给定的5个数 int n = nums.size(); // 输出所有可能的组合 for (int k = 1; k <= n; ++k) { // 从1到5 std::vector<int> combination; generateCombinations(nums, combination, 0, k); } return 0; }

说明

  1. generateCombinations 函数:

    • 参数: nums(待组合的数列)、combination(当前组合)、start(当前开始位置)、k(需要的组合长度)。
    • 逻辑: 如果当前组合的大小达到了 k,则输出组合;否则,递归地生成组合。
  2. main 函数:

    • 初始化了一个包含 5 个数的数组 nums
    • 遍历从 1 到 5,生成并输出所有长度的组合。

输出示例

代码会输出所有可能的组合,包括不同长度的组合,如下:

1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 4 1 2 5 1 3 1 3 4 1 3 5 1 4 1 4 5 1 5 2 3 2 3 4 2 3 4 5 2 3 5 2 4 2 4 5 2 5 3 4 3 4 5 3 5 4 5

关键点

  • 组合长度: 通过 k 参数控制组合的长度。
  • 递归生成: 递归地生成组合并使用回溯算法来撤销之前的选择。

这段代码展示了如何在 C++ 中生成并打印给定数集的所有可能组合,适用于组合问题的基本实现。