#include <vector>
#include <iostream>
// 辅助函数,用于生成组合
void generateCombinations(const std::vector<int>& nums, int start, std::vector<int>& current, std::vector<std::vector<int>>& result) {
// 将当前组合加入结果
result.push_back(current);
// 从当前位置开始,逐个选择元素加入当前组合,生成新的组合
for (int i = start; i < nums.size(); ++i) {
current.push_back(nums[i]); // 将当前元素加入组合
generateCombinations(nums, i + 1, current, result); // 递归生成以当前元素为起点的新组合
current.pop_back(); // 回溯,移除当前元素,继续尝试下一个元素
}
}
// 主函数,生成整数数组的全组合
std::vector<std::vector<int>> generateAllCombinations(const std::vector<int>& nums) {
std::vector<std::vector<int>> result;
std::vector<int> current;
generateCombinations(nums, 0, current, result);
return result;
}
int main() {
std::vector<int> nums = { 1, 2, 3 };
std::vector<std::vector<int>> combinations = generateAllCombinations(nums);
// 打印结果
for (const auto& combination : combinations) {
std::cout << "[";
for (int num : combination) {
std::cout << num << " ";
}
std::cout << "]" << std::endl;
}
return 0;
}