lintcode-子集17

给定一个含不同整数的集合,返回其所有的子集

样例

如果 S = [1,2,3],有如下的解:

[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]
注意

子集中的元素排列必须是非降序的,解集必须不包含重复的子集

class Solution {
public:
    /**
     * @param S: A set of numbers.
     * @return: A list of lists. All valid subsets.
     */
    vector<int> base;
    void backtracing(int cur,int n,vector<int> &nums,vector<vector<int> >&ret){
        if(cur==n){
            ret.push_back(base);
            return ;
        }
        base.push_back(nums[cur]);
        backtracing(cur+1,n,nums,ret);
        base.pop_back();
        backtracing(cur+1,n,nums,ret);
    } 
    vector<vector<int> > subsets(vector<int> &nums) {
    	vector<vector<int> >ret;
    	backtracing(0,nums.size(),nums,ret);
    	return ret;
    }
};


你可能感兴趣的:(lintcode-子集17)