ビット全探索とは、二進数とビットを用いて、ある集合の部分集合を全列挙(全探索)する便利なアルゴリズムです。
<ソース>
public class Main {
// bit全探索
public static void main(String[] args) {
String[] 要素 = {"A","B","C", "D"};
int 要素数 = 要素.length;
StringBuffer sb = new StringBuffer();
for (int i=0; i<(Math.pow(2,要素数)); i++) {
sb.setLength(0);
for (int j=0; j<要素数; j++) {
int bit = 1&i>>j;
System.out.print(bit);
if (bit == 1) {
sb.append(要素[j]);
}
}
System.out.print(" -> ");
System.out.println(sb.toString());
}
}
}
<実行結果>
0000 ->
1000 -> A
0100 -> B
1100 -> AB
0010 -> C
1010 -> AC
0110 -> BC
1110 -> ABC
0001 -> D
1001 -> AD
0101 -> BD
1101 -> ABD
0011 -> CD
1011 -> ACD
0111 -> BCD
1111 -> ABCD