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], []]
vector<vector<int> > subsets(vector<int> &S) { vector<vector<int> >D; int t=S.size(); int A[t],n=t,i=0; subset(A,n,i,D,S); return D; } void subset(int A[],int n,int cur,vector<vector<int> >&D,vector<int> &S) { vector<int>t; for(int i=0;i<cur;i++) { t.push_back(S[A[i]]); } sort(t.begin(),t.end()); D.push_back(t); int s=cur?A[cur-1]+1:0; for(int j=s;j<n;j++) { A[cur]=j; subset(A,n,cur+1,D,S); } }