void addAllGroups(int i, vector<int>& nums,vector<int>&item,vector<vector<int>>& result)
{
if (i >= nums.size()) return;
item.push_back(nums[i]);
result.push_back(item);
addAllGroups(i + 1, nums,item, result);
item.pop_back();
addAllGroups(i + 1, nums,item, result);
}
位操作实现:
vector<vector<int>> subsets(vector<int>& nums)
{
vector<vector<int>> result;
int allSet = 1 << nums.size();
for (int i = 0; i < allSet; i++)
{
vector<int> item;
for (int j = 0; j < nums.size();j++)
{
if (i & (1 << j))
{
item.push_back(nums[j]);
}
}
result.push_back(item);
}
return result;
}