class Solution {
public:
void dfs(vector<int> nums,vector<int> path,int dept,vector<bool> used){
if(dept==nums.size()){
res.push_back(path);
return;
}
for(int i=0;i<nums.size();i++){
if(used[i]){
continue;
}
path.push_back(nums[i]);
used[i]=1;
dfs(nums,path,dept+1,used);
//回溯的意思是之前有的操作需要全部把它调整回来
//状态重置
path.pop_back();
used[i]=0;
}
}
vector<vector<int>> permute(vector<int>& nums) {
int n=nums.size();
int dept=0;
vector<bool> used(n,false);
vector<int> path;
dfs(nums,path,dept,used);
return res;
}
private:
vector<vector<int>> res;
};
原文:https://www.cnblogs.com/jobshenlei/p/14631623.html