Question78–Subsets
給定一個整數集,集合中元素各不相同,求出所有子集。
算法
n個整數的子集N等於下面兩部分:
- 前n-1個整數的子集Q
- Q中的每個集合中再加入第n個元素形成的集合
eg:{2,3}的子集:{},{2},{3},{2,3}
{2,3,4}的子集:1. 第一部分({2,3}的子集): {},{2},{3},{2,3}
2. 第二部分:{4},{2,4},{3,4},{2,3,4}
code
vector<vector<int>> subsets(vector<int>& nums){
vector<vector<int>> subset;
vector<int> a;
subset.push_back(a);
if(nums.size()==0) return subset;
a.push_back(nums[0]);
subset.push_back(a);
for(int i=1; i<nums.size(); i++){
int size=subset.size();
for(int j=0; j<size; j++){
(a=subset[j]).push_back(nums[i]);
subset.push_back(a);
}
}
return subset;
}