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;
}