这是从Set
打印PowerSet的算法Input: Set[], set_size
1. Get the size of power set
powet_set_size = pow(2, set_size)
2 Loop for counter from 0 to pow_set_size
(a) Loop for i = 0 to set_size
(i) If ith bit in counter is set
Print ith element from set for this subset
(b) Print seperator for subsets i.e., newline
任何人都可以解释我的意思 计数器中的位已设置。
谢谢:)
答案 0 :(得分:1)
数字位于以二进制表示法表示的计算机中。例如,5表示为:
00000000101
因为第零位是第一位,所以第二位也是第一位。因此2^0+2^2=5
。
例如,您可以测试i
位是否"设置" (意思是等于1),使用以下测试:
(n&(1<<i)) != 0
i
个位置向左移动。这样它就会创建一个只设置i
位的数字。n
时。如果算上二进制,最终将枚举零和一个的所有可能组合:
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111