Write a method that returns all subsets of a set

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值