题意:

  给一个集合,有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 };
AC代码

相关文章: