一道求子集的题:具体就是算一个给出的集合中的所有的子集,有人用递归实现,不过我还是喜欢用位运算来做。
原理是这样的,工具给出的集合的大小X,我们可以得到子集的大小:(1<<X),然后,我们可以通过将每个子集的
序号与数组中的每一位做运算,然后将结果写回数组。这里,数组的每一位1或者0(1代表输出),数组的大小由
子集大小的二进制的位数决定,具体开代码:
PS:<<,,>> 移位运算,所移位数在右边。
一道求子集的题:具体就是算一个给出的集合中的所有的子集,有人用递归实现,不过我还是喜欢用位运算来做。
原理是这样的,工具给出的集合的大小X,我们可以得到子集的大小:(1<<X),然后,我们可以通过将每个子集的
序号与数组中的每一位做运算,然后将结果写回数组。这里,数组的每一位1或者0(1代表输出),数组的大小由
子集大小的二进制的位数决定,具体开代码:
PS:<<,,>> 移位运算,所移位数在右边。