java查找大小大于或等于2的数组子集
下面的代码打印所有子集,但我需要大于或等于2的大小
public static void printSubsets(char set[])
{
int n = set.length;
for (int i = 0; i < (1<<n); i++)
{
System.out.print("{ ");
for (int j = 0; j < n; j++)
if ((i & (1 << j)) >0 )
System.out.print(set[j] + " ");
System.out.println("}");
}
}
# 1 楼答案
大小为0的子集对应于
i == 0
。要消除空子集,请从i = 1
开始大小为1的子集对应于正好有一个位集的} is a power of two 如果
i
;或者,当它是2的幂时。一个正数^{(i & (i - 1)) == 0
或者,您可以保留原始循环,只需插入此支票:
它没有那么聪明或高效,但它很好读