特定の数値セットの累乗を出力するアルゴリズムを作成しようとしています。セットの 0 から 2^length までのループでそれを行いました。インデックス i を 2 進数に変換し、1 があるたびにその数値を出力します。ただし、文字列の前にゼロがないため、正しい出力が得られません。
たとえば、{2, 3, 4} という 3 つの数字のセットがある場合、i が 3 の場合、文字列を "011" にしたいのですが、代わりに "11" になり、次の出力が得られます。 3、4 の代わりに 2、3。
これが私のコードです:
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
この出力を取得できるように、指定されたビット数で整数をバイナリに変換する方法があるかどうかを知りたいです。