‹ 上一题 下一题 ›

在下⾯的程序中,使⽤整数表⽰⼀种组合。整数⼆进制表⽰的某⼀位为 ,表⽰该位对应的数被选中,反之为 表⽰未选中。例如,从 这 个数中选出 个,则 0b111000 代表选中选中 三个数。 三个数,0b011001 代表 zuhe_next 函数按组合对应的整数由⼤到⼩的顺序,求出组合 的下⼀个组合。横线处可以填⼊的是( )。

int intlow2(int c) {
    return ________;  // 在此处填入选项
}
int zuhe_next_incur(int c, int n, int l) {
    if (n == l) 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)
未选择
输入
输出

            
答案