编程练习:求集合的所有子集(C语言实现) |
您所在的位置:网站首页 › 用c语言求数组的和 › 编程练习:求集合的所有子集(C语言实现) |
对输入的任意正整数n,打印出集合{0,1,2,……,n-1}的所有子集 思路:包含n个元素的集合,有2^n个子集,用下标表示集合内元素,0/1表示子集中是否包含该元素,考虑二进制 ※注意int的范围※ 用2进制Bit位来标记集合中的某个元素是否被选中,1代表选中,0代表未选中。例如集合{a, b, c}的所有子集可如下表示: {}(空集) 0 0 0 {a} 0 0 1 {b} 0 1 0 {c} 1 0 0 {a, b} 0 1 1 {a, c} 1 0 1 {b, c} 1 1 0 {a, b, c} 1 1 1 //子集 //对输入的任意正整数n,打印出集合{0,1,2,……,n-1}的所有子集 //例如:输入3时,输出是:{}{0}{1}{2}{0,1}{0,2}{1,2}{0,1,2} --8个,2^3个子集 //{1,2,3}--{1,1,1} //{1,2}--{1,1,0} //二进制 #include #include int main() { int num,i,j,k,m,n;//int范围--2^31 第一位是符号位 int a[32]= {0}; //不能根据输入的n定义数组的大小,初始化一个尽可能大的数字 scanf("%d",&n);//int 2^31 所以n最大值为? num=pow(2,n);//n个元素有2^n个子集 for(k=0; k |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |