void subsetHelper(int i, vector<int> & subset, vector<vector<int>> & ans, vector<int> & A){ if(i==A.size()){ ans.push_back(subset); return; } subsetHelper(i+1, subset, ans, A); subset.push_back(A[i]); subsetHelper(i+1, subset, ans, A); subset.pop_back(); }
void SubSetTest::subsetHelper( vector<vector<int>>& rst, vector<int>& list, const vector<int>& num, int pos ) { rst.push_back(list); for (int i = pos; i < num.size(); ++i) { list.push_back(num[i]); subsetHelper(rst, list, num, i + 1); list.pop_back(); } }
vector<vector<int>> SubSetTest::subset( const vector<int>& num ) { vector<vector<int>> rst; if (num.size() == 0) { return rst; } vector<int> list; vector<int> tmpNum = num; //sort(tmpNum.begin(), tmpNum.end(), less<int>()); subsetHelper(rst, list, tmpNum, 0); return rst; }
vector<vector<int> > Solution::subsets(vector<int> &A) { /*int s, e; sort(v.begin(), v.end()); vector<int> temp(v.size()), empty; for(int i=0; i<v.size(); i++) temp[i] = 0; vector<vector<int> > result; result.push_back(empty); for(int i=0; i<v.size(); i++) { s = i+1; e = v.size() - 1; temp[0] = v[i]; result = subsetsHelper(v, temp, result, s, e, 1); } return result;*/ vector< vector<int> > ans; vector<int> subset; sort(A.begin(), A.end()); subsetHelper(0, subset, ans, A); sort(ans.begin(), ans.end()); return ans; }