輸出一個集合的所有子集合
阿新 • • 發佈:2019-02-11
set<set<int> > result;
if (input.size() == 1) // 集合只有一個元素,子集合就是自己
{
set<int> one;
one.insert(*input.begin());
result.insert(one);
}
else
{
int poped = *input.begin(); // 移除第一個元素,第一個元素本身是一個集合
set<int> aSubset;
aSubset.insert(poped);
result.insert(aSubset);
input.erase(input.begin());
set<set<int> > tmp = getSubset(input); // 遞迴獲取除去第一個元素後集合的所有子集
for (set<set<int> >::iterator it = tmp.begin(); it != tmp.end(); it++)
{
result.insert(*it); // 集合的子集包括了所有去除第一個元素後的子集
set<int> one = *it;
one.insert(poped); // 集合包含了第一個元素 和 去除第一個元素後集合的所有子集組成的集合
result.insert(one);
}
}
return result;
if (input.size() == 1) // 集合只有一個元素,子集合就是自己
{
set<int> one;
one.insert(*input.begin());
result.insert(one);
}
else
{
int poped = *input.begin(); // 移除第一個元素,第一個元素本身是一個集合
set<int> aSubset;
aSubset.insert(poped);
result.insert(aSubset);
input.erase(input.begin());
set<set<int> > tmp = getSubset(input); // 遞迴獲取除去第一個元素後集合的所有子集
for (set<set<int> >::iterator it = tmp.begin(); it != tmp.end(); it++)
{
result.insert(*it); // 集合的子集包括了所有去除第一個元素後的子集
set<int> one = *it;
one.insert(poped); // 集合包含了第一個元素 和 去除第一個元素後集合的所有子集組成的集合
result.insert(one);
}
}
return result;