Subsets

来源:互联网 发布:西门子消防主机软件 编辑:程序博客网 时间:2024/04/27 15:08

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],  []]
class Solution {public:    void visit(vector<vector<int> > &result, vector<int> &S, bool *flags, int n, int pos, int count)    {        if (pos >= n || count == 0)        {            if (count == 0)            {                vector<int> temp;                for (int i = 0; i < n; i++)                {                    if (flags[i])                    {                        temp.push_back(S[i]);                    }                }                result.push_back(temp);            }            return;        }        flags[pos] = true;        visit(result, S, flags, n, pos+1, count-1);        flags[pos] = false;        visit(result, S, flags, n, pos+1, count);    }    vector<vector<int> > subsets(vector<int> &S) {        int size = S.size();        sort(S.begin(), S.end());        bool *flags = new bool[size];        for (int i = 0; i < size; i++)        {            flags[i] = false;        }        vector<vector<int> > result;        for (int i = 0; i <= size; i++)        {            visit(result, S, flags, size, 0, i);        }        delete []flags;        return result;    }};

 
0 0
原创粉丝点击