c++ 递归算法实现排列组合
作者:野牛程序员:2023-07-01 09:21:18 C++阅读 2848
在C++中,可以使用递归算法来实现排列组合。下面是一个示例代码,用于生成给定数组的所有排列组合。
#include <iostream>
#include <vector>
using namespace std;
// 辅助函数,交换数组中两个元素的位置
void swap(vector<int>& nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
// 递归函数,生成给定数组的所有排列组合
void permute(vector<int>& nums, int start, vector<vector<int>>& result) {
if (start == nums.size() - 1) {
// 当递归到数组最后一个元素时,将当前排列加入结果集
result.push_back(nums);
return;
}
for (int i = start; i < nums.size(); i++) {
// 将当前位置的元素依次与后面的元素交换,并递归调用
swap(nums, start, i);
permute(nums, start + 1, result);
// 恢复数组,以便进行下一次交换
swap(nums, start, i);
}
}
// 函数入口
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> result;
permute(nums, 0, result);
return result;
}
int main() {
vector<int> nums = {1, 2, 3};
vector<vector<int>> result = permute(nums);
// 打印结果
for (const auto& permutation : result) {
for (int num : permutation) {
cout << num << " ";
}
cout << endl;
}
return 0;
}上述代码定义了一个permute函数,该函数接受一个整数数组nums作为输入,并返回一个二维向量,其中包含了nums的所有排列组合。在函数内部,使用permute辅助函数进行递归操作,该辅助函数通过交换数组中的元素来生成排列组合。
在main函数中,我们创建一个示例数组{1, 2, 3},并调用permute函数来获取所有排列组合。最后,将结果打印到控制台上。
请注意,此示例仅适用于整数数组。如果要处理其他类型的元素,需要进行相应的修改。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:c++ 常用数据类型转换
- 下一篇:c++字符串的输入
