Subsets 【dfs】

Given a set of distinct integers, nums, 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 nums = [1,2,3], a solution is:

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


Source Code:

class Solution {
public:
    vector<vector <int> > subsets(vector<int>& nums) {
        sort (nums.begin (), nums.end ());
        vector <vector <int> > res;
        vector <int> status;

        dfs (nums, status, 0, res);

        return res;
    }

    void dfs (const vector <int> & nums, vector <int> & status, \
            int cur, vector <vector <int> > & res) {

        if (cur == nums.size ()) {
            res.push_back (status);
            return;
        }

        dfs (nums, status, cur + 1, res);

        status.push_back (nums[cur]);

        dfs (nums, status, cur + 1, res);

        status.pop_back ();
    }
};

 

posted @ 2015-06-07 17:02  Jeremy Wu  阅读(177)  评论(0)    收藏  举报