Module: Urutan Kurungan Betul (RSP)


Problem

4 /6


Penjanaan PSP

Theory Click to read/hide

Penjanaan urutan kurungan yang betul mengikut terus daripada cara semakan dilakukan - kita hanya perlu menambah kurungan baharu tanpa melanggar ketepatan. Ini dilakukan dengan lelaran rekursif. Jika anda tidak mengenalinya - BE... ah, tidak, anda boleh cuba memahami dengan membaca lebih lanjut. Berikut ialah contoh kod untuk satu jenis kurungan:
 

#include <vector>
#include <iostream>

menggunakan ruang nama std;
int n; // Separuh panjang 
vektor<char> ans; // Jawapan kami 

kosong rec(int baki) {
jika (ans.size() == 2 * n) { // Jika ia berlaku, maka kita selesai 
untuk (int i = 0; i < 2 * n; i++)
cout << ans[i] << " ";
cout << "\n";
}
jika (ans.size() + baki + 2 <= n * 2) { // Semak, kami Akan berjaya kami menutup pendakap pembukaan baharu 
// Sekarang perhatikan tangan anda: kita tidak perlu membuat vektor berasingan untuk setiap jujukan 
ans.push_back('(');
rec(baki + 1);
ans.pop_back(); // Untuk memahami perkara ini, anda perlu sedar tentang rekursi. Mula-mula, kami menambah kurungan pada vektor, dan kemudian kami melaksanakan semua kod ini sekali lagi. 
// Iaitu, tambahkan kurungan sekali lagi, jika kita boleh. 
// Dan ini akan berlaku sehingga kita mula meninggalkan rekursi - iaitu, sehingga kita mencapai panjang yang dikehendaki. 
// Kemudian kurungan akan mula dialih keluar. Jika anda memahami perkara ini - saya mengucapkan tahniah kepada anda, anda hebat. 
}
jika (baki > 0) { // Jika kami boleh menutup kurungan, kami menutupnya. 
ans.push_back(')');
rec(baki - 1);
ans.pop_back();
}
}

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

    kembali 0;
}
Dan kini masa kesukaran - anda perlu menulis algoritma untuk beberapa jenis kurungan SENDIRI! Muahahahahahahahahahahah!

Problem

British Scientists, Inc. pembangunan paling inovatif ialah cara mencari penyelesaian untuk sebarang masalah yang boleh diselesaikan menggunakan kalkulus tilde-omega-lambda (iaitu, untuk tiada). Untuk melakukan ini, mereka melalui semua kemungkinan urutan kurungan panjang x, dengan x ialah digit pertama pemalar rahsia yang digunakan dalam kebanyakan pembangunan syarikat. Jika x adalah ganjil, mereka hanya menambah satu padanya. Mereka kemudian menggunakan algoritma lanjutan menggunakan pengaturcaraan neuro-linguistik dan Fibonacci mengira nombor Googold Catalan untuk mencari istilah. Tetapi algoritma ini telah pun dilaksanakan dan dipatenkan. 

Tugas anda ialah melaksanakan algoritma lelaran. 


Input
Input ialah digit pertama pemalar rahsia - x (\(1 <= x <= 9\)).  ;
 

Output
Anda perlu mengeluarkan semua rentang panjang x (atau x+1 jika \(x \% 2 ==1\) ) dalam susunan leksikografi.

 

Contoh
# Input Output
1 1
( )
[ ]
{}