Если я правильно понимаю, вы хотите вставить «разделители» в список, чтобы разделить его.Принимая ваш пример и используя символ |
для обозначения разделителя,
1 2 3
1 2|3
1|2 3
1|2|3
- это решения, которые вы хотите.
В списке (я называю это списком, а ненабор, потому что вам нужен сохраненный порядок) из n
элементов, есть n-1
потенциальных позиций для разделителя.В приведенном выше примере есть две позиции.В каждой позиции разделитель может присутствовать или отсутствовать.
Вы можете использовать двоичное представление чисел от 0
до 2^(n-1) - 1
, чтобы перечислить все возможные расположения разделителей.В вашем примере это будет число от 0..3.
0: 00
1: 01
2: 10
3: 11