46.全排列
题目:46. 全排列
class Solution {
public:
//【【【DevC++中类内的成员往往无法调试,所以上机时尽量不要定义类,直接写函数,回溯法使用的path、finalPath、nums等直接定义为全局变量即可】】】
vector<int> path;
vector<vector<int>> finalPath;
bool used[200]={false};//此外C++不能使用vector<bool>
void backtracking_FullPermutation(vector<int> nums,vector<int> &path,vector<vector<int>> &finalPath,bool *used){
//终止条件
if(path.size()==nums.size()){
finalPath.push_back(path);
return;
}
for(int i=0;i<nums.size();i++){//注意和组合不同,此处的i不是从startIndex开始!
//回溯模板
if(!used[i]){//使用used变量,并且不需要传递startIndex,每次都让i初值为0而使用used数组决定当前的options列表
used[i]=true;
path.push_back(nums[i]);
backtracking_FullPermutation(nums,path,finalPath,used);
path.pop_back();
used[i]=false;
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
backtracking_FullPermutation(nums,path,finalPath,used);
return finalPath;
}
};

浙公网安备 33010602011771号