单选题

在下面的程序中,使用整数表示一种组合。整数二进制表示的某一位为1,表示该位对应的数被选中,反之为0表示未选中。

例如,从 0 - 5 这 6 个数中选出 3 个,则 0b111000 代表选中 3, 4, 5 三个数, 0b011001 代表选中 0, 3, 4 三个数。 zuhe_next 函数按组合对应的整数由大到小的顺序,求出组合 c 的下一个组合。横线处可以填入的是(    )。

int intlow2(int c) {

return ________;

// 在此处填入选项

}

int zuhe_next_incur(int c, int n, int l) {

if (n == 1) return c;

if ((c & (1 << l)) == 0) {

int d = intlow2(c);

c = (c & ~d);

c = (c | (d >> 1));

} else {

c = (c & ~(1 << l));

c = zuhe_next_incur(c, n - 1, l + 1);

int d = intlow2(c);

c = (c | (d >> 1));

}

return c;

}

// 从n个数中选m个,当前组合为c

int zuhe_next(int c, int n, int m) {

return zuhe_next_incur(c, n, 0);

}

A

((c - 1) ^ c)

B

(((c - 1) ^ c) + 1)

C

(((c - 1) ^ c) >> 1)

D

((((c - 1) ^ c) + 1) >> 1)

赣ICP备20007335号-2