全排列与组合问题
1、全排列
1 class Solution 2 { 3 public: 4 int n; 5 vector<bool> st; 6 vector<vector<int>> ans; 7 vector<int> path; 8 9 vector<vector<int>> permute(vector<int>& nums) 10 { 11 n = nums.size(); 12 st = vector<bool>(n,false); 13 14 dfs(nums,0); 15 16 return ans; 17 } 18 19 void dfs(vector<int>& nums,int u) 20 { 21 if(u == n) 22 { 23 ans.push_back(path); 24 return; 25 } 26 for(int i = 0;i < n;i++) 27 { 28 if(!st[i]) 29 { 30 st[i] = true; 31 path.push_back(nums[i]); 32 dfs(nums,u + 1); 33 34 path.pop_back(); 35 st[i] = false; 36 } 37 } 38 } 39 };
2、组合
1 void helper(vector<int>& nums, int start, vector<int>& out, vector<vector<int> >& res) 2 { 3 res.push_back(out); 4 for (int i = start; i < nums.size(); ++i) 5 { 6 out.push_back(nums[i]); 7 helper(nums, i + 1, out, res); 8 out.pop_back(); 9 } 10 }
Mamba never out

浙公网安备 33010602011771号