分析:1、每次向集合A中添加一个元素x,集合A为部分元素的所有组合 2、拷贝A,记为A1,将A1中每个元素和x进行拼接,然后将生成的元素放入A中
void addAllOne(vector<int> &to,vector<int> &from){
for(int i=0;i<from.size();i++)
to.push_back(from[i]);
}
void addAllTwo(vector<vector<int> > &to, vector<vector<int> > &from){
for(int i=0;i<from.size();i++)
to.push_back(from[i]);
}
vector<vector<int> > getAllSets(vector<int> set,int index){
vector<vector<int> > allsubsets;
if(set.size()==index){
vector<int> empty;
allsubsets.push_back(empty);
}else{
allsubsets=getAllSets(set,index+1);
int item=set[index];
vector<vector<int> > moresubsets;
for(int i=0;i<allsubsets.size();i++){
vector<int> newsubset;
addAllOne(newsubset,allsubsets[i]);
newsubset.push_back(item);
moresubsets.push_back(newsubset);
}
addAllTwo(allsubsets,moresubsets);
}
return allsubsets;
}