Как в С++ получить все возможные двоичные числа определенной длинны?

Чтобы получить все возможные двоичные числа определенной длины в C++, можно использовать рекурсивную функцию. Вот пример кода, который демонстрирует эту идею:

#include <iostream>
#include <vector>

using namespace std;

void generateBinaryNumbers(int n, vector<string>& result, string current = "") {
    // Базовый случай: если текущая строка уже имеет нужную длину n
    if (current.length() == n) {
        result.push_back(current);
        return;
    }

    // Рекурсивно вызываем функцию для случаев, когда в конце строки добавляем 0 или 1
    generateBinaryNumbers(n, result, current + "0");
    generateBinaryNumbers(n, result, current + "1");
}

int main() {
    int n;
    cout << "Введите длину строк: ";
    cin >> n;

    vector<string> binaryNumbers;
    generateBinaryNumbers(n, binaryNumbers);

    cout << "Все возможные двоичные числа длины " << n << ":n";
    for (const string& binaryNumber : binaryNumbers) {
        cout << binaryNumber << endl;
    }

    return 0;
}

Давайте разберем этот код по частям:

1. Мы начинаем с объявления функции generateBinaryNumbers, которая принимает три аргумента: n (длина строки, которую мы хотим сгенерировать), result (ссылка на вектор строк, куда будут добавлены все сгенерированные числа) и current (строка, которая представляет текущее сгенерированное число).

2. Внутри функции есть базовый случай, когда длина текущей строки равна n. В этом случае мы добавляем текущую строку в результаты и возвращаемся из функции.

3. Если текущая строка еще не достигла нужной длины, мы вызываем функцию рекурсивно дважды: с добавлением "0" в конец текущей строки и с добавлением "1" в конец текущей строки. Это гарантирует, что все возможные комбинации будут сгенерированы.

4. В main функции мы читаем ввод пользователя - длину строк.

5. Затем мы объявляем вектор binaryNumbers, который будет хранить все сгенерированные числа.

6. Мы вызываем generateBinaryNumbers с введенной длиной строки и вектором binaryNumbers, чтобы заполнить вектор всеми возможными двоичными числами.

7. Наконец, мы выводим все числа из вектора binaryNumbers на экран.

Этот код дает следующий результат для ввода n = 3:

Введите длину строк: 3
Все возможные двоичные числа длины 3:
000
001
010
011
100
101
110
111

Таким образом, код работает правильно и генерирует все возможные двоичные числа для указанной длины строки.