主题:求子集
skyloveka
[专家分:0] 发布于 2012-02-06 18:59:00
n个元素的集合{1、 2、 3、…、n}可以划分为若干非空子集。例如,n=3时,集合{1、2、3}可分为:
{{1}、{2}、{3}}
{{1、2}、{3}}
{{1、3}、{2}}
{{2、3}、{3}}
{{1、2、3}}
请编写程序求n 个元素集合{1、2、…、n}的所有非空子集,并输出n 个元素集合的所有非空子集。
回复列表 (共3个回复)
沙发
codepk [专家分:2800] 发布于 2012-02-08 17:49:00
#include "stdio.h"
int main()
{
int n;
int i;
int j;
int s;
int flag;
scanf("%d", &n);
if(n > sizeof(n) * 8 -1)
return -1;
s = 1 << n;
for(i = 1; i < s; i++)
{
printf("{");
flag = 1;
for(j = 0; j < n; j++)
{
if(i & 1 << j)
{
if(flag)
{
flag = 0;
printf("%d", j + 1);
}
else printf(", %d",j + 1);
}
}
printf("}\n");
}
return 0;
}
板凳
kucer [专家分:0] 发布于 2012-02-15 09:07:00
关于这个方面的知识我在[url=http://www.beidaqingniao.org]北大青鸟[/url]的课程里学到了不少呢,有兴趣可以去看看了解研究下
3 楼
skyloveka [专家分:0] 发布于 2012-02-18 20:08:00
好的[em2]
我来回复