首页 > 代码库 > Subsets 集合子集 回溯

Subsets 集合子集 回溯

Given a set of distinct integers, S, return all possible subsets.

Note:

  • Elements in a subset must be in non-descending order.
  • The solution set must not contain duplicate subsets.

 

For example,
If S = [1,2,3], a solution is:

[  [3],  [1],  [2],  [1,2,3],  [1,3],  [2,3],  [1,2],  []]

 

Hide Tags
 Array Backtracking Bit Manipulation
 
递归,放与不放的问题。转化成生成树

class Solution {private:    vector<vector<int> > ret;public:    void generate(vector<int> vet,vector<int> &S,int i){        if(i==S.size()){            ret.push_back(vet);            return;        }        generate(vet,S,i+1);        //相当于取右子树        vet.push_back(S[i]);                     generate(vet,S,i+1);       //相当于取左子树    }    vector<vector<int> > subsets(vector<int> &S) {        ret.clear();        sort(S.begin(),S.end());        vector<int> vet;        generate(vet,S,0);        return ret;    }};

 

Subsets 集合子集 回溯