7-1 幂集-所有的子集

description

所谓幂集(Power Set), 就是原集合中所有的子集(包括全集和空集)构成的集族。

输入一个整数n(0<=n<=10)
输出由整数1~n构成的集合{1,2,3,…,n}的幂集。

输入格式:

整数n(0<=n<=10)

输出格式:

{1,2,3,…,n}的幂集,每行一个子集,子集不可重复,子集之间顺序以及子集元素之间顺序均不作要求。
子集输出格式:{x,x,x,…,x}(x表示子集中的元素)

输入样例1:

3

输出样例1:

{}
{1}
{2}
{3}
{1,2}
{1,3}
{2,3}
{1,2,3}

输入样例2:

0

输出样例2:

{}

solution

#include<stdio.h>
#include<math.h>
int a[10], b[10];
void inc(int n){
	for(int i = 0; i < n; i++){
		if(b[i]) b[i] = 0;
		else{
			b[i] = 1;
			return;
		}
	}
}
int main(){
	int n, flag;
	scanf("%d", &n);
	for(int i = 0; i < n; i++){
		a[i] = i + 1;
		b[i] = 0;
	}
	for(int i = 0; i < pow(2, n); i++){
		printf("{");
		for(int j = 0; j < n; j++){
			flag = 0;
			if(b[j]){
				printf("%d", a[j]);
				for(int k = j+1; k < n; k++) 
					if(b[k]) flag = 1;
				if(flag) printf(",");
			}
		}
		printf("}\n");
		inc(n);
	}
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值