在 C++ 中实现全排列(Permutations)有多种方法,这里我将介绍两种常用的方法:递归方法和使用 STL 的 next_permutation 方法。
方法 1:递归方法
递归方法通过固定一个元素的位置,然后对剩余的元素进行全排列来实现。
#include <iostream>
#include <vector>
using namespace std;
void permute(vector<int>& nums, int start, vector<vector<int>>& result) {
if (start == nums.size()) {
result.push_back(nums);
return;
}
for (int i = start; i < nums.size(); ++i) {
swap(nums[start], nums[i]); // 固定一个位置
permute(nums, start + 1, result); // 递归调用
swap(nums[start], nums[i]); // 回溯,恢复原数组
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>>