Chuỗi *()[]niềng răng được định nghĩa là một chuỗi bao gồm các ký tự trong đó dấu ngoặc nhọn khớp chính xác:
[brace-string] ::= [unit] || [unit] [brace-string]
[unit] ::= "" || "*" || "(" [brace-string] ")" || "[" [brace-string] "]"
Đây là một chuỗi cú đúp hợp lệ:
((())***[]**)****[(())*]*
Nhưng đây không phải là:
)(
**(**[*](**)
**([*)]**
Nhiệm vụ của bạn là viết một chương trình (hoặc hàm), với một số nguyên dương n, lấy một số làm đầu vào và đầu ra (hoặc trả về) tất cả các chuỗi có độ dài hợp lệ n.
Thông số kỹ thuật
- Bạn có thể xuất các chuỗi theo thứ tự bất kỳ.
- Bạn có thể xuất ra dưới dạng một danh sách hoặc một chuỗi được phân tách bằng một ký tự khác.
- Chương trình của bạn phải xử lý 0 chính xác. Có 1 chuỗi có thể có độ dài 0, đó là chuỗi rỗng
"". - Đây là môn đánh gôn , vì vậy câu trả lời hợp lệ ngắn nhất - được đo bằng byte - thắng.
Các trường hợp thử nghiệm
0.
1. *
2. ** () []
3. *** ()* []* (*) [*] *() *[]
4. **** ()** []** (*)* [*]* (**) **() **[] *(*) *[*] (()) ()() ()[] ([]) [**] [()] [[]] []() [][] *()* *[]*