当前位置:首页 C++ > 正文

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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击