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;
}
说明
generateCombinations
函数:- 参数:
nums
(待组合的数列)、combination
(当前组合)、start
(当前开始位置)、k
(需要的组合长度)。 - 逻辑: 如果当前组合的大小达到了
k
,则输出组合;否则,递归地生成组合。
- 参数:
main
函数:- 初始化了一个包含 5 个数的数组
nums
。 - 遍历从 1 到 5,生成并输出所有长度的组合。
- 初始化了一个包含 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++ 中生成并打印给定数集的所有可能组合,适用于组合问题的基本实现。