您的位置:首页 > 其它

Write a method that returns all subsets of a set

2013-09-21 18:29 183 查看
分析: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐