c++全排列的递归算法怎么实现

   2025-02-20 6530
核心提示:下面是C++中全排列的递归算法的实现:#include iostream#include vectorusing namespace std;// 交换两个元素的位置void swap(ve

下面是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 permuteHelper(vector<int>& nums, int begin, vector<vector<int>>& result) {if (begin == nums.size()) {result.push_back(nums);return;}for (int i = begin; i < nums.size(); i++) {swap(nums, begin, i);permuteHelper(nums, begin + 1, result);swap(nums, begin, i);  // 恢复原来的位置,以便进行下一次交换}}vector<vector<int>> permute(vector<int>& nums) {vector<vector<int>> result;permuteHelper(nums, 0, result);return result;}int main() {vector<int> nums = {1, 2, 3};vector<vector<int>> result = permute(nums);for (vector<int>& permutation : result) {for (int num : permutation) {cout << num << " ";}cout << endl;}return 0;}

该算法通过递归实现全排列。首先,定义一个permuteHelper函数,该函数用于生成从指定位置开始的全排列。在遍历过程中,将当前位置的元素与后面的元素逐个交换,并继续递归生成全排列。当遍历到最后一个位置时,将当前排列添加到结果中。

在主函数中,定义一个测试用例nums,然后调用permute函数生成全排列,并打印结果。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言