私がやりたいことは次のとおりです。
入力: n、たとえば n = 3
出力: {000, 001, 010, 011, 100, 101, 110, 111}、すべてのサブセットを生成し、サブセットの順序は気にしません
私はアルゴリズムを実装しました:
for (long i = 0, max = 1 << n; i < max; i++) {
for (int j = 0; j < n; j++) {
// check if the j bit is set to 1
int isSet = (int) i & 1 << j;
if (isSet > 0) {
// if yes, set the corresponding jth bit of x as 1.
}
}
// add x to results;
}
私は、Gray Code がこのようなことを実行できることを知っています。しかし、サブセットを生成する最も効率的な方法はどれですか?