查找集合的子集
前一段时间,我们离散老师让用代码写找集合的所有子集,代码如下
public class TTTT1 {
public static void main(String
[] args
) {
int[] t
= {1,2,3,4,5};
int tt
= (int)Math
.pow(2, t
.length
);
for(int i
=0 ; i
<tt
; i
++) {
int a
= 1;
System
.out
.print("{ ");
for(int j
= 0 ; j
< t
.length
; j
++) {
if((i
& a
) != 0) {
System
.out
.print(t
[j
] + " ");
}
a
= a
<< 1;
}
System
.out
.print("}");
System
.out
.println();
}
}
}
首先我随意定义了一个有5个元素的集合,用 Math.pow(a,b)算出这个集合的子集的个数。 第一个for循环将所有的子集全部输出,用第二个for循环控制位运算,将其二进制码的和运算的结果为1 的位数对应的元素输出。 例如当i=1时
然后将a=1换为二进制数为 00001 将其进行二进制的和运算无论当1放在和运算的哪一个上面,它与00001的和运算只有第一个不为0,所以输出数组中的第一个元素。以此类推。