Module: Sequenza di parentesi corrette (RSP)


Problem

4 /6


Generazione PSP

Theory Click to read/hide

La generazione di sequenze di parentesi corrette segue direttamente dal modo in cui viene eseguito il controllo: dobbiamo solo aggiungere nuove parentesi senza violare la correttezza. Questo viene fatto mediante iterazione ricorsiva. Se non lo conosci - BE... ah, no, puoi provare a capire leggendo oltre. Ecco un esempio di codice per un tipo di parentesi:
 

#include <vettore>
#include <iostream>

utilizzando spazio dei nomi std;
int n; // Mezza lunghezza 
vettore<carattere> ans; // La nostra risposta 

void rec(int saldo) {
if (ans.size() == 2 * n) { // Se lo fa, allora siamo fatto < /span>
for (int i = 0; i < 2 * n; i++)
cout << ans[i] << " ";
cout << "\n";
}
if (ans.size() + balance + 2 <= n * 2) { // Controlla, noi provvediamo a chiudere la nuova parentesi graffa di apertura 
// Ora fai attenzione: non abbiamo bisogno di creare un vettore separato per ogni sequenza 
ans.push_back('(');
rec(saldo + 1);
ans.pop_back(); // Per capirlo, devi essere consapevole della ricorsione. Innanzitutto, aggiungiamo una parentesi al vettore, quindi eseguiamo nuovamente tutto questo codice. 
// Ovvero, aggiungi di nuovo una parentesi, se possibile. 
// E questo accadrà finché non inizieremo a lasciare la ricorsione, cioè finché non raggiungeremo la lunghezza desiderata. 
// Quindi le parentesi inizieranno a essere rimosse. Se lo capisci, mi congratulo con te, sei fantastico. 
}
if (balance > 0) { // Se possiamo chiudere una parentesi, la chiudiamo. 
ans.push_back(')');
rec(saldo - 1);
ans.pop_back();
}
}

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

    ritorno 0;
}
E ora è il momento delle difficoltà: dovrai scrivere TU STESSO l'algoritmo per diversi tipi di parentesi! Muahahahahahahahahahahahaha!

Problem

Lo sviluppo più innovativo di British Scientists, Inc è un modo per trovare una soluzione per qualsiasi problema che può essere risolto usando il calcolo tilde-omega-lambda (cioè, per nessuno). Per fare ciò, passano attraverso tutte le possibili sequenze di parentesi di lunghezza x, dove x è la prima cifra di una costante segreta utilizzata in molti degli sviluppi dell'azienda. Se x è dispari, ne aggiungono semplicemente uno. Quindi utilizzano algoritmi avanzati utilizzando la programmazione neurolinguistica e i numeri catalani Googold calcolati da Fibonacci per individuare i termini. Ma questi algoritmi sono già stati implementati e brevettati. 

Il tuo compito è implementare l'algoritmo di iterazione. 


Inserimento
L'input è la prima cifra della costante segreta - x (\(1 <= x <= 9\)).  ;
 

Uscita
Devi emettere tutti gli intervalli di lunghezza x (o x+1 se \(x \% 2 ==1\) ) in ordine lessicografico.

 

Esempi
# Input Uscita
1 1
( )
[ ]
{}