Вы можете дополнить каждый элемент до максимальной длины фиктивными элементами и использовать массив 4D:
static const unsigned char x[M][N][P][8] = { { 1, 2, 5, 7, -1, -1, -1, -1 },
{ 1, 2, 3, 4, 5, 6, 7, 8 },
...
или вы можете использовать отдельные биты в качестве флагов, например ::1004
static const unsigned char x[M][N][P] = { 0x53, // Bits 0, 1, 4, 6 are set
0xFF,
...
Если вам нужно более 8 возможностей, перейдите, например, до. uint16_t
или uint32_t
.
Какой метод вы выберете, зависит от того, что вы собираетесь делать с данными.