LeetCode:46. 全排列
class Solution {
vector<vector<int>>res;
public:
vector<vector<int>> permute(vector<int>& nums) {
list<int>track ;//记录路径
vector<bool>used(nums.size(),false);//判断结点是否被使用过
backtrack(nums,track,used);
return res;
}
private:
void backtrack(const vector<int>& nums,vector<int>& track,vector<bool>& used){
if(track.size()==nums.size()){
res.push_back(vector<int>(track.begin(),track.end()));
return;
}
for(int i=0;i<nums.size();i++){
if(used[i]){
continue;
}
track.push_back(nums[i]);
used[i]=true;
backtrack(nums,track,used);
track.pop_back();
used[i]=false;
}
}
};