Thử thách được thực hiện từ đây và cũng ở đây
Một chuỗi n ngoặc đơn bao gồm n (
s và n )
s.
Trình tự dấu ngoặc đơn hợp lệ được xác định như sau:
Bạn có thể tìm cách lặp lại việc xóa cặp dấu ngoặc đơn liền kề "()" cho đến khi nó trở nên trống rỗng.
Ví dụ:
(())
là dấu ngoặc đơn hợp lệ, bạn có thể xóa cặp ở vị trí thứ 2 và thứ 3 và()
sau đó bạn có thể làm cho nó trống.)()(
không phải là dấu ngoặc đơn hợp lệ, sau khi bạn xóa cặp ở vị trí thứ 2 và thứ 3, nó sẽ trở thành)(
và bạn không thể xóa nữa
Bài tập
Cho một số n bạn cần tạo tất cả các chuỗi ngoặc đơn chính xác theo thứ tự từ điển
Đầu ra có thể là một mảng, danh sách hoặc chuỗi (trong trường hợp này là một chuỗi trên mỗi dòng)
Bạn có thể sử dụng một cặp khác nhau chẳng hạn như dấu ngoặc đơn {}
, []
, ()
hoặc bất kỳ dấu hiệu đóng mở
Thí dụ
n = 3
((())) (()()) (())() ()(()) ()()()
n = 2
(()) ()()
1
s và -1
s) không?