Евгений Чудаков
Знаток
(340)
3 недели назад
#include <iostream>
#include <string>
void generate_sequences(int n, int open_round, int close_round, int open_square, int close_square, std::string sequence) {
// Если длина последовательности равна n, проверяем её и выводим, если она корректная
if (sequence.length() == n) {
if (open_round == close_round && open_square == close_square) {
std::cout << sequence << std::endl;
}
return;
}
// Добавляем открывающую круглую скобку, если это допустимо
if (open_round < n / 2) {
generate_sequences(n, open_round + 1, close_round, open_square, close_square, sequence + "(");
}
// Добавляем закрывающую круглую скобку, если это допустимо
if (close_round < open_round) {
generate_sequences(n, open_round, close_round + 1, open_square, close_square, sequence + ")");
}
// Добавляем открывающую квадратную скобку, если это допустимо
if (open_square < n / 2) {
generate_sequences(n, open_round, close_round, open_square + 1, close_square, sequence + "[");
}
// Добавляем закрывающую квадратную скобку, если это допустимо
if (close_square < open_square) {
generate_sequences(n, open_round, close_round, open_square, close_square + 1, sequence + "]");
}
}
void generate_bracket_sequences(int n) {
// Проверяем, что n четное, иначе не можем создать правильную скобочную последовательность
if (n % 2 != 0) {
std::cout << "Невозможно создать правильную скобочную последовательность нечетной длины" << std::endl;
return;
}
generate_sequences(n, 0, 0, 0, 0, "");
}
int main() {
int n;
std::cout << "Введите длину последовательности: ";
std::cin >> n;
generate_bracket_sequences(n);
return 0;
}
Лейла НуриеваУченик (90)
3 недели назад
спасибо, но первый тест не проходит
Входные данные
4
Результат работы
(())
([])
()()
()[]
[()]
[[]]
[]()
[][]