用c++xie一个全排列问题的代码
时间: 2024-05-06 18:16:38 浏览: 76
quanpailie.rar_C++quanpailie_quanpailiec++_一组数全排列_全排列
以下是一个简单的递归实现的全排列问题的C++代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
void permute(vector<int>& nums, int start, vector<vector<int>>& res)
{
if (start == nums.size())
{
res.push_back(nums);
return;
}
for (int i = start; i < nums.size(); ++i) {
swap(nums[start], nums[i]);
permute(nums, start + 1, res);
swap(nums[start], nums[i]);
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> res;
permute(nums, 0, res);
return res;
}
int main()
{
vector<int> nums = {1, 2, 3};
vector<vector<int>> res = permute(nums);
for (auto& r : res) {
for (auto& n : r) {
cout << n << " ";
}
cout << endl;
}
return 0;
}
```
该代码使用了递归的方式实现全排列。在每一次递归中,我们将第 `start` 个元素与其后面的元素分别交换位置,得到不同的排列。最终将所有排列添加到结果集中并返回。
阅读全文