您的位置:首页 > 编程语言 > C语言/C++

编写一个方法,返回某集合的所有子集。

2014-02-08 22:23 260 查看
简单构造法

n=0:{}

n=1:{}、{a1}

n=2:{}、{a1}、{a2}、{a1,a2}

求P(n),先计算P(n-1),复制一份,在每个集合中加入an。
C++实现:
#include <set>
#include <vector>

using namespace std;

vector<set<int> > getSubsets(const set<int> &iset)
{
vector<set<int> > allsubsets;

allsubsets.push_back(set<int>());

for(set<int>::const_iterator i = iset.begin(); i != iset.end(); ++i)
{
int item = *i;

vector<set<int> > moresubsets;

for(vector<set<int> >::iterator iter = allsubsets.begin();
iter != allsubsets.end();
++iter)
{

set<int> newsubset(*iter);
newsubset.insert(item);
moresubsets.push_back(newsubset);
}

allsubsets.insert(allsubsets.end(), moresubsets.begin(), moresubsets.end());
}

return allsubsets;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 简单构造