DFS
只需要分nums[i]在不在subset中,DFS调用两次,一次将nums[i]推进去,一次nums[i]则不在结果中
void DFS(vector<vector<int>>& res, vector<int>& out, vector<int>& nums,int level) {
if (level == nums.size()) {
res.push_back(out);
return;
}
else
{
DFS(res, out, nums, level+1);
out.push_back(nums[level]);
DFS(res, out, nums, level+1);
out.pop_back();
}
}
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> res;
vector<int> out;
DFS(res, out, nums,0);
return res;
}