Я хочу сделать следующее:
Ввод: 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;
}
Я знаю, что Grey Code может делать что-то подобное. Но мне интересно, какой способ создания подмножеств является наиболее эффективным?
// if yes, set the corresponding jth bit of x as 1.
? у вас уже естьi
в качестве установленного представления, зачем вам ещеx
? Кроме того, какой язык вы используете? - person Pham Trung   schedule 21.12.2015long i=(1<<n)-1; while (i--) {/*add i to results*/}
? - person m69 ''snarky and unwelcoming''   schedule 22.12.2015