题意:
给一个集合,有n个互不相同的元素,求出所有的子集(包括空集,但是不能重复)。
思路:
DFS方法:由于集合中的元素是不可能出现相同的,所以不用解决相同的元素而导致重复统计。
1 class Solution { 2 public: 3 vector<vector<int>> subsets(vector<int>& nums) { 4 sort(nums.begin(),nums.end()); 5 DFS(0,nums,tmp); 6 return ans; 7 } 8 9 void DFS(int pos,vector<int>& nums,vector<int>& seq) 10 { 11 ans.push_back(seq); 12 for( ; pos<nums.size(); pos++) 13 { 14 seq.push_back(nums[pos]); 15 DFS(pos+1,nums,seq); //放 16 seq.pop_back(); 17 } 18 } 19 private: 20 vector<vector<int>> ans; 21 vector<int> tmp; 22 };