leetcode-46. 全排列
39题组合总数也可以用这种模式

class Solution { public: vector<vector<int>> res; vector<vector<int>> permute(vector<int>& nums) { if(nums.size()==0) return res; vector<int> temp; vector<bool> used(nums.size(),false); order(nums,temp,used); return res; } void order(vector<int> nums,vector<int> temp,vector<bool> used){ // 这题最关键的就是used数组,想了办法没想到怎么表示访问过的元素 if(nums.size() == temp.size()){ res.push_back(temp); return; } for(int i = 0; i < nums.size(); i++){ if(used[i]==true) // 如果这个元素被访问过,直接跳过 continue; used[i] = true; // 设置为true temp.push_back(nums[i]); order(nums,temp,used); //进行递归 temp.pop_back(); // 回溯 used[i] = false; //回溯 } } };

浙公网安备 33010602011771号