c++ 递归算法实现排列组合
作者:野牛程序员:2023-07-01 09:21:18 C++阅读 2750
在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++字符串的输入