题目链接:https://leetcode-cn.com/problems/permutations/
题目如下:
class Solution {
public:
vector<int> path;
vector<vector<int>> result;
vector<vector<int>> permute(vector<int>& nums) {
result.clear();
path.clear();
vector<bool> used(nums.size(),false);
backtracking(nums,used);
return result;
}
void backtracking(vector<int>& nums,vector<bool>& used){
//如果path中的元素个数等同nums数组中元素的个数,则说明找到一组全排列
if(path.size()==nums.size()){
result.push_back(path);
return;
}
for(int i=0;i<nums.size();i++){
//used数组:记录此时path里都有哪些元素使用过了,一个排列里一个元素只能使用一次
if(used[i]==true) continue;
used[i]=true;
path.push_back(nums[i]);
backtracking(nums,used);//放入一个元素之后,继续递归
//递归完成,开始回溯/还原
path.pop_back();
used[i]=false;
}
}
};