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!