Một dãy ngoặc đúng được định nghĩa một cách đệ quy như sau:
+Dãy rỗng là dãy ngoặc đúng
+ Nếu S là dãy ngoặc đúng thì (S) cũng là dãy ngoặc đúng
+ Nếu S và T là dãy ngoặc đúng thì ST cũng là dãy ngoặc đúng
Ví dụ: (())(()()) là một dãy ngoặc đúng, còn (()))(() hoặc (((())) không là dãy ngoặc đúng
Yêu cầu: Cho một dãy ngoặc, yêu cầu xác định xem dãy ngoặc đó là đúng hay không?
Input:
Một dòng duy nhất là dãy ngoặc cần được xét với độ dài không quá 106
Output:
Nếu dãy ngoặc là đúng, thì in ra YES, ngược lại thì in ra NO
input
(())(()())
output
YES
input
(()))(()
output
NO
GNU C++