Module: Sequência correta de colchetes (RSP)


Problem

4 /6


geração PSP

Theory Click to read/hide

A geração de sequências corretas de colchetes segue diretamente da forma como a verificação é feita - só precisamos adicionar novos colchetes sem violar a exatidão. Isso é feito por iteração recursiva. Se você não o conhece - BE... ah, não, você pode tentar entender lendo mais. Aqui está um exemplo de código para um tipo de colchetes:
 

#include <vetor>
#include <iostream>

usando namespace std;
int n; // Meio comprimento 
vetor<char> resposta; // Nossa resposta 

void rec(int saldo) {
if (ans.size() == 2 * n) { // Se sim, então estamos feito < /span>
para (int i = 0; i < 2 * n; i++)
cout << ans[i] << " ";
cout << "\n";
}
if (ans.size() + saldo + 2 <= n * 2) { // Verifique, nós vamos fazer isso, fechamos a nova chave de abertura 
// Agora cuidado com as mãos: não precisamos fazer um vetor separado para cada sequência 
ans.push_back('(');
rec(saldo + 1);
ans.pop_back(); // Para entender isso, você precisa estar ciente da recursão. Primeiro, adicionamos um parêntese ao vetor e, em seguida, executamos todo esse código novamente. 
// Ou seja, adicione um parêntese novamente, se pudermos. 
// E isso vai acontecer até começarmos a sair da recursão - ou seja, até atingirmos o comprimento desejado. 
// Então os parênteses começarão a ser removidos. Se você entende isso - eu parabenizo você, você é incrível. 
}
if (balance > 0) { // Se pudermos fechar um colchete, nós o fechamos. 
ans.push_back(')');
rec(saldo - 1);
ans.pop_back();
}
}

 int main()
{
cin>> n;
rec(0);

    retorno 0;
}
E agora a hora das dificuldades - você mesmo terá que escrever o algoritmo para vários tipos de colchetes! Muahahahahahahahahahahaha!

Problem

O desenvolvimento mais inovador da British Scientists, Inc. é uma forma de encontrar uma solução para qualquer problema que possa ser resolvido usando o cálculo til-ômega-lambda (ou seja, para nenhum). Para fazer isso, eles passam por todas as seqüências de colchetes possíveis de comprimento x, onde x é o primeiro dígito de uma constante secreta usada em muitos dos desenvolvimentos da empresa. Se x for ímpar, eles apenas adicionam um a ele. Eles então usam algoritmos avançados usando programação neurolinguística e números Googold catalães calculados por Fibonacci para localizar os termos. Mas esses algoritmos já foram implementados e patenteados. 

Sua tarefa é implementar o algoritmo de iteração. 


Entrada
A entrada é o primeiro dígito da constante secreta - x (\(1 <= x <= 9\)).  ;
 

Saída
Você precisa gerar todos os intervalos de comprimento x (ou x+1 se \(x \% 2 ==1\) ) em ordem lexicográfica.

 

Exemplos
# Entrada Saída
1 1
( )
[ ]
{}