编程练习:求集合的所有子集(C语言实现)

您所在的位置:网站首页 用c语言求数组的和 编程练习:求集合的所有子集(C语言实现)

编程练习:求集合的所有子集(C语言实现)

#编程练习:求集合的所有子集(C语言实现)| 来源: 网络整理| 查看: 265

 对输入的任意正整数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