第24092题 单选题
C++按从大到小生成下一个组合的代码中,intlow2函数横线处应填入的表达式是?

在下面的程序中,使用整数表示一种组合:整数二进制表示的某一位为1,表示该位对应的数被选中,反之为0表示未选中。例如从0-5这6个数中选出3个,则0b111000代表选中3、4、5三个数,0b011001代表选中0、3、4三个数。zuhe_next函数按组合对应的整数由大到小的顺序,求出组合c的下一个组合。请选择intlow2函数横线处可以填入的正确选项。

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)

程序运行统计
暂无判题统计