Генерирующий список всех двоичных строк размером 2n, где количество единиц в первых n битах равно количеству единиц в последних n битах

#algorithm #recursion #binary

#алгоритм #рекурсия #двоичном

Вопрос:

Например, при заданном входе n = 2 я хочу, чтобы результат был [‘1111’, ‘1001’, ‘0110’, ‘0000’, ‘0101’, ‘1010’]. Обратите внимание, что порядок вывода не имеет значения.

Я чувствую, что должен использовать рекурсивное решение, в базовом случае, когда n = 1 и возвращает [00, 11] , но я не могу понять следующий шаг. Я на правильном пути?

Спасибо, любая помощь приветствуется.

Комментарии:

1. Почему n= 2? Должно ли это быть n = 4?

Ответ №1:

Сгенерируйте все двоичные строки длиной n, разделите их по количеству установленных битов и поместите каждую пару (включая elt с самим собой) в сегменты.

Например. для n = 2 у вас есть:

 0: 00
1: 01, 10
2: 11

0x0: 0000
1x1: 0101, 0110, 1001, 1010
2x2: 1111