有关子集

来源:百度知道 编辑:UC知道 时间:2024/09/24 21:24:50
如何用C++实现求一个集合的所有子集!
这个问题我想了好久,一直理不清楚!
谁能给我讲解一下思路与步骤!
谢谢大伙了!

#include<iostream>
using namespace std;
int n;
int way[9];
void cou(int x)
{
printf("{");
for (int a=1;a<=x-1;++a)
printf("%d,",way[a]);
printf("%d}\n",way[x]);
}
void search(int x)
{
if (x<=n)
for (int a=n;a>=1;--a)
{
if (way[x-1]<a)
{
way[x]=a;
cou(x);
search(x+1);
}
}
}
int main()
{
//freopen("2.in","r",stdin);
//freopen("2.out","w",stdout);
scanf("%d",&n);
printf("{}\n");
search(1);
}

求的是{1,2,。。。。,N}的所有子集
其他集合的自己也是深度优先搜索(DFS)