Cho số n. Dãy ngoặc đúng là chuỗi chỉ chứa '(' và ')' có thể biến thành biểu thức toán học đúng bằng cách chèn '1' và '+' giữa các ký tự. Ví dụ: ()() đúng vì thành (1)+(1). Hãy tìm đúng n dãy ngoặc đúng khác nhau độ dài 2n.
Ví dụ
Với n = 4, đầu ra: ()()()(), (())()(), ((()))(), (((()))).
Giải thuật
Với k từ 1 đến n: in k dấu '(', rồi k dấu ')', rồi n-k cặp (). Mỗi k cho một dãy khác nhau, tổng cộng n dãy.
Mã C++
#include <bits/stdc++.h>
using namespace std;
void solve(int n) {
for (int k = 1; k <= n; k++) {
for (int i = 1; i <= k; i++)
cout << "(";
for (int i = 1; i <= k; i++)
cout << ")";
for (int i = k + 1; i <= n; i++)
cout << "()";
cout << endl;
}
}
int main() {
int n = 4;
solve(n);
}
Đầu vào / Đầu ra
Input: 4
Output: ()()()() (())()() ((()))() (((())))