Find nth SET bit in an int

后端 未结 11 1011
栀梦
栀梦 2020-12-14 18:14

Instead of just the lowest set bit, I want to find the position of the nth lowest set bit. (I\'m NOT talking about value on the nt

11条回答
  •  难免孤独
    2020-12-14 19:00

    Edit

    After giving it some thought and using the __builtin_popcount function, I figured it might be better to decide on the relevant byte and then compute the whole result instead of incrementally adding/subtracting numbers. Here is an updated version:

    int GetBitAtPosition(unsigned i, unsigned n)
    {
        unsigned bitCount;
    
        bitCount = __builtin_popcount(i & 0x00ffffff);
        if (bitCount <= n)
        {
            return (24 + LUT_BitPosition[i >> 24][n - bitCount]);
        }
    
        bitCount = __builtin_popcount(i & 0x0000ffff);
        if (bitCount <= n)
        {
            return (16 + LUT_BitPosition[(i >> 16) & 0xff][n - bitCount]);
        }
    
        bitCount = __builtin_popcount(i & 0x000000ff);
        if (bitCount <= n)
        {
            return (8 + LUT_BitPosition[(i >> 8) & 0xff][n - bitCount]);
        }
    
        return LUT_BitPosition[i & 0xff][n];
    }
    

    I felt like creating a LUT based solution where the number is inspected in byte-chunks, however, the LUT for the n-th bit position grew quite large (256*8) and the LUT-free version that was discussed in the comments might be better.

    Generally the algorithm would look like this:

    unsigned i = 0x000006B5;
    unsigned n = 4;
    unsigned result = 0;
    unsigned bitCount;
    while (i)
    {
        bitCount = LUT_BitCount[i & 0xff];
        if (n < bitCount)
        {
            result += LUT_BitPosition[i & 0xff][n];
            break; // found
        }
        else
        {
            n -= bitCount;
            result += 8;
            i >>= 8;
        }
    }
    

    Might be worth to unroll the loop into its up to 4 iterations to get the best performance on 32 bit numbers.

    The LUT for bitcount (could be replaced by __builtin_popcount):

    unsigned LUT_BitCount[] = {
        0, 1, 1, 2, 1, 2, 2, 3, // 0-7
    
        1, 2, 2, 3, 2, 3, 3, 4, // 8-15
    
        1, 2, 2, 3, 2, 3, 3, 4, // 16-23
        2, 3, 3, 4, 3, 4, 4, 5, // 24-31
    
        1, 2, 2, 3, 2, 3, 3, 4, // 32-39
        2, 3, 3, 4, 3, 4, 4, 5, // 40-47
        2, 3, 3, 4, 3, 4, 4, 5, // 48-55
        3, 4, 4, 5, 4, 5, 5, 6, // 56-63
    
        1, 2, 2, 3, 2, 3, 3, 4, // 64-71
        2, 3, 3, 4, 3, 4, 4, 5, // 72-79
        2, 3, 3, 4, 3, 4, 4, 5, // 80-87
        3, 4, 4, 5, 4, 5, 5, 6, // 88-95
        2, 3, 3, 4, 3, 4, 4, 5, // 96-103
        3, 4, 4, 5, 4, 5, 5, 6, // 104-111
        3, 4, 4, 5, 4, 5, 5, 6, // 112-119
        4, 5, 5, 6, 5, 6, 6, 7, // 120-127
    
        1, 2, 2, 3, 2, 3, 3, 4, // 128
        2, 3, 3, 4, 3, 4, 4, 5, // 136
        2, 3, 3, 4, 3, 4, 4, 5, // 144
        3, 4, 4, 5, 4, 5, 5, 6, // 152
        2, 3, 3, 4, 3, 4, 4, 5, // 160
        3, 4, 4, 5, 4, 5, 5, 6, // 168
        3, 4, 4, 5, 4, 5, 5, 6, // 176
        4, 5, 5, 6, 5, 6, 6, 7, // 184
        2, 3, 3, 4, 3, 4, 4, 5, // 192
        3, 4, 4, 5, 4, 5, 5, 6, // 200
        3, 4, 4, 5, 4, 5, 5, 6, // 208
        4, 5, 5, 6, 5, 6, 6, 7, // 216
        3, 4, 4, 5, 4, 5, 5, 6, // 224
        4, 5, 5, 6, 5, 6, 6, 7, // 232
        4, 5, 5, 6, 5, 6, 6, 7, // 240
        5, 6, 6, 7, 6, 7, 7, 8, // 248-255
    };
    

    The LUT for bit position within a byte:

    unsigned LUT_BitPosition[][8] = {
        // 0-7
        {UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
    
        // 8-15
        {3,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,3,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,3,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,3,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
    
        // 16-31
        {4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {3,4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,3,4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,3,4,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,3,4,UINT_MAX,UINT_MAX,UINT_MAX},
    
        // 32-63
        {5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {3,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,3,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,3,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,3,5,UINT_MAX,UINT_MAX,UINT_MAX},
        {4,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,4,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,4,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,4,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,4,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,4,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,4,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,4,5,UINT_MAX,UINT_MAX,UINT_MAX},
        {3,4,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,4,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,4,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,4,5,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,3,4,5,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,4,5,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,3,4,5,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,3,4,5,UINT_MAX,UINT_MAX},
    
        // 64-127
        {6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {3,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,3,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,3,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,3,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {4,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,4,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,4,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,4,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,4,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,4,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,4,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,4,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {3,4,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,4,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,4,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,4,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,3,4,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,4,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,3,4,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,3,4,6,UINT_MAX,UINT_MAX},
        {5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,5,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {3,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,5,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,3,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,5,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,3,5,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,3,5,6,UINT_MAX,UINT_MAX},
        {4,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,4,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,4,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,4,5,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,4,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,4,5,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,4,5,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,4,5,6,UINT_MAX,UINT_MAX},
        {3,4,5,6,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,4,5,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,4,5,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,4,5,6,UINT_MAX,UINT_MAX},
        {2,3,4,5,6,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,4,5,6,UINT_MAX,UINT_MAX},
        {1,2,3,4,5,6,UINT_MAX,UINT_MAX},
        {0,1,2,3,4,5,6,UINT_MAX},
    
        // 128-255
        {7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {3,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,3,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,3,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,3,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {4,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,4,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,4,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,4,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,4,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,4,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,4,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,4,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {3,4,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,4,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,4,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,4,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,3,4,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,4,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,3,4,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,3,4,7,UINT_MAX,UINT_MAX},
        {5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,5,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {3,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,5,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,3,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,5,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,3,5,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,3,5,7,UINT_MAX,UINT_MAX},
        {4,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,4,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,4,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,4,5,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,4,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,4,5,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,4,5,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,4,5,7,UINT_MAX,UINT_MAX},
        {3,4,5,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,4,5,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,4,5,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,4,5,7,UINT_MAX,UINT_MAX},
        {2,3,4,5,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,4,5,7,UINT_MAX,UINT_MAX},
        {1,2,3,4,5,7,UINT_MAX,UINT_MAX},
        {0,1,2,3,4,5,7,UINT_MAX},
        {6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {3,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,3,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,3,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,3,6,7,UINT_MAX,UINT_MAX},
        {4,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,4,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,4,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,4,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,4,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,4,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,4,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,4,6,7,UINT_MAX,UINT_MAX},
        {3,4,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,4,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,4,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,4,6,7,UINT_MAX,UINT_MAX},
        {2,3,4,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,4,6,7,UINT_MAX,UINT_MAX},
        {1,2,3,4,6,7,UINT_MAX,UINT_MAX},
        {0,1,2,3,4,6,7,UINT_MAX},
        {5,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {2,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,2,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,2,5,6,7,UINT_MAX,UINT_MAX},
        {3,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,3,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,3,5,6,7,UINT_MAX,UINT_MAX},
        {2,3,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,3,5,6,7,UINT_MAX,UINT_MAX},
        {1,2,3,5,6,7,UINT_MAX,UINT_MAX},
        {0,1,2,3,5,6,7,UINT_MAX},
        {4,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,4,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {1,4,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,1,4,5,6,7,UINT_MAX,UINT_MAX},
        {2,4,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,2,4,5,6,7,UINT_MAX,UINT_MAX},
        {1,2,4,5,6,7,UINT_MAX,UINT_MAX},
        {0,1,2,4,5,6,7,UINT_MAX},
        {3,4,5,6,7,UINT_MAX,UINT_MAX,UINT_MAX},
        {0,3,4,5,6,7,UINT_MAX,UINT_MAX},
        {1,3,4,5,6,7,UINT_MAX,UINT_MAX},
        {0,1,3,4,5,6,7,UINT_MAX},
        {2,3,4,5,6,7,UINT_MAX,UINT_MAX},
        {0,2,3,4,5,6,7,UINT_MAX},
        {1,2,3,4,5,6,7,UINT_MAX},
        {0,1,2,3,4,5,6,7},
    };
    

提交回复
热议问题