1.查找所有子集
对于集合S,如果S有n个元素,则它有2的n次方个子集
问题求解步骤:
*假设S有n个元素,从S中删除元素x,剩下n-1个元素构成一个新的集合S1,则S1有2的n-1次方个子集.
*将元素x加入S1中的每个子集中,这样就产生了新的2的n-1次方个子集,这些新子集和S1构成了集合S的所有子集
Example:对于集合S{1,2,3}
实现代码:
#include<iostream>
#include<set>
using namespace std;
template<typename T>
set<set<T>> combination(set<T> &s)
{
set<set<T>> result;//结果集
set<set<T>> prime;//保存从S中删除元素x后的集合S1的所有子集
set<set<T>> prime_plus;//保存从s1的每个子集加上X后构成的所有子集
if(s.empty()) //空集时结束递归
{
set<T> empty;
对于集合S,如果S有n个元素,则它有2的n次方个子集
问题求解步骤:
*假设S有n个元素,从S中删除元素x,剩下n-1个元素构成一个新的集合S1,则S1有2的n-1次方个子集.
*将元素x加入S1中的每个子集中,这样就产生了新的2的n-1次方个子集,这些新子集和S1构成了集合S的所有子集
Example:对于集合S{1,2,3}
实现代码:
#include<iostream>
#include<set>
using namespace std;
template<typename T>
set<set<T>> combination(set<T> &s)
{
set<set<T>> result;//结果集
set<set<T>> prime;//保存从S中删除元素x后的集合S1的所有子集
set<set<T>> prime_plus;//保存从s1的每个子集加上X后构成的所有子集
if(s.empty()) //空集时结束递归
{
set<T> empty;