dfs needs more practice.
class Solution {
public:
vector<vector<int> > subsets(vector<int> &S) {
vector<vector<int> > answer;
vector<int> cur;
answer.push_back(cur);
if(S.empty())
return answer;
sort(S.begin(),S.end());
for(int i = 1;i<=S.size();i++)
{
dfs(S,0,i,cur,answer);
}
return answer;
}
void dfs(vector<int> &S,int start,int num,vector<int> &cur, vector<vector<int>> &answer)
{
if(num == cur.size())
{
answer.push_back(cur);
return;
}
for(int i = start ;i<S.size();i++)
{
cur.push_back(S[i]);
dfs(S,i+1,num,cur,answer);
cur.pop_back();
}
}
};