Write a method that returns all subsets of a set

来源:互联网 发布:鲁西bpm软件 编辑:程序博客网 时间:2024/06/01 10:04

分析: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;}


原创粉丝点击