📚 Bitmask Subsets
For an array of n elements, there are 2^n possible
subsets. Each subset can be represented by a bitmask from 0 to 2^n -
1:
// Items: [A, B, C, D]
// Mask 0 (0000) → {} (empty)
// Mask 1 (0001) → {A}
// Mask 5 (0101) → {A, C}
// Mask 15 (1111) → {A, B, C, D}
for (mask = 0; mask < (1 << n); mask++) {
for (i = 0; i < n; i++) {
if (mask & (1 << i)) {
// Include items[i]
}
}
}