#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
vector<vector<int>> ans;
vector<int> temp;
void backtrack(vector<int>& nums, vector<bool>& used){
if (temp.size()==nums.size()){
ans.emplace_back(temp);
return ;
}
for (int i=0; i<nums.size(); i++){
if(used[i]==true) continue; // path里已经收录的元素,直接跳过
used[i]=true;
temp.emplace_back(nums[i]);
backtrack(nums, used);
temp.pop_back();
used[i]=false; // 已经收录的元素也要回溯
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<bool> used(nums.size(), false);
backtrack(nums, used);
return ans;
}
};
int main(){
vector<int> myvector = {1, 2, 3};
vector<vector<int>> ans;
Solution S;
ans=S.permute(myvector);
for (auto arr:ans){
for (auto element:arr){
cout<<element<<" ";
}
cout<<endl;
}
return 0;
}
结果:
1 2 4
1 4 2
2 1 4
2 4 1
4 1 2
4 2 1
Leetcode46. 全排列--回溯算法
最新推荐文章于 2023-06-21 21:17:18 发布