我正在尝试编写一个算法来打印给定数字集的幂集。我用一个循环从我的集合的 0 到 2^length 做到了这一点。我将索引 i 转换为二进制,只要有一个,我就打印那个数字。但是,由于字符串前面没有任何零,我没有得到正确的输出。
例如,如果我有一组三个数字:{2, 3, 4},当 i 为 3 时,我希望字符串为“011”,但它是“11”,我得到的输出为2, 3 而不是 3, 4。
这是我的代码:
public static void powerset (int[] A){
double powerSetLength = Math.pow(2, A.length);
for (int i=0; i<powerSetLength; i++){
String bin = Integer.toBinaryString(i);
System.out.println ("\nbin: " + bin);
for (int j=0; j<bin.length(); j++){
if (bin.charAt(j)=='1')
System.out.print(A[j] + " ");
}
}
System.out.println();
}
这是我得到的输出:
9 7 2
bin: 0
bin: 1
9
bin: 10
9
bin: 11
9 7
bin: 100
9
bin: 101
9 2
bin: 110
9 7
bin: 111
9 7 2
这是我想获得的输出示例:
9 7 2
bin 001
2
我想知道是否有办法将整数转换为具有指定位数的二进制,以便获得此输出。