暴力枚举之求子集

求子集

编写程序,输入n个整数,求出它们的非空子集(组合数)
例如,n=3,分别为1,2,3三个整数,子集如下
1
2
3
1,2
2,3
1,3
1,2,3

解答:

void sub_set(int n, int* number){
	int max = (1<<n)-1;
	for(int i=1;i<=max;i++){
		for(int j=0;j<n;j++){
			if(((1<<j)&i)){  //切记不要写结果==1;这个是左移运算符而不是右移运算符!!!
				printf("%d",number[j]);
			}
		}
		printf("\n");
	}
}

posted @ 2014-10-30 13:28  CommonQ  阅读(118)  评论(0编辑  收藏  举报