给定一个数组,比如{1,2,3,4} 求出 该集合的所有子集。
其中WA一次,因为要求升序排列。
搜索即可。
int cmp(int a,int b) { return a < b; } class Solution { public: void AddItemStep(int i,int k,vector<int>&S,vector<vector<int>>&ans,vector<int>&item) { if(item.size() == k) { ans.push_back(item); return; } else { if(i >= S.size())return; item.push_back(S[i]); AddItemStep(i+1,k,S,ans,item); item.pop_back(); AddItemStep(i+1,k,S,ans,item); } } void AddItem(int k,vector<int> &S,vector<vector<int>>&ans) { int i = 0; vector<int> item; item.clear(); AddItemStep(i,k,S,ans,item); } vector<vector<int> > subsets(vector<int> &S) { sort(S.begin(),S.end(),cmp); vector<vector<int>>ans; ans.clear(); vector<int>item; item.clear(); ans.push_back(item); for(int i = 1;i <= S.size();i++) { AddItem(i,S,ans); } return ans; } };