47. XÂU KÍ TỰ NGOẶC
Tên chương trình: BRACKETS.???
Xét câu chỉ chứa các kí tự ngoặc tròn (,), ngặc vuông [,] và ngoặc nhọn {,}. Để ngắn ngọn, ta gọi nó là xâu ngoặc.
Định nghĩa xâu ngoặc đúng.
· Xâu rỗng được coi là xâu ngoặc đúng.
· Nếu a là xâu ngoặc đúng thì (a), [a], {a} cũng là các xâu ngoặc đúng.
· Nếu a và b là các xâu ngoặc đúng thì ab cũng là xâu ngoặc đúng.
Cho xâu S độ dài n. Xâu S[SUB]k[/SUB]S[SUB]k-1[/SUB]S[SUB]k-2[/SUB]... S[SUB]n[/SUB]S[SUB]1[/SUB]S[SUB]2[/SUB]... S[SUB]k-1[/SUB] được gọi là xâu đẩy vòng của S. Bản thân S cũng là một xâu đẩy vòng của S.
Yêu cầu: Cho xâu ngoặc S có độ dài không quá 1000. Hãy xác định có tồn tại một xâu đẩy vòng của S là xâu ngoặc đúng hay không và đưa ra câu trả lời Yes hoặc No.
Dữ liệu: Vào từ file văn bản BRACKETS.INP gồm một dòng chứa xâu S.
Kết quả: Đưa ra file văn bản BRACKETS.OUT câu trả lời Yes hoặc No.
Ví dụ
Tên chương trình: BRACKETS.???
Xét câu chỉ chứa các kí tự ngoặc tròn (,), ngặc vuông [,] và ngoặc nhọn {,}. Để ngắn ngọn, ta gọi nó là xâu ngoặc.
Định nghĩa xâu ngoặc đúng.
· Xâu rỗng được coi là xâu ngoặc đúng.
· Nếu a là xâu ngoặc đúng thì (a), [a], {a} cũng là các xâu ngoặc đúng.
· Nếu a và b là các xâu ngoặc đúng thì ab cũng là xâu ngoặc đúng.
Cho xâu S độ dài n. Xâu S[SUB]k[/SUB]S[SUB]k-1[/SUB]S[SUB]k-2[/SUB]... S[SUB]n[/SUB]S[SUB]1[/SUB]S[SUB]2[/SUB]... S[SUB]k-1[/SUB] được gọi là xâu đẩy vòng của S. Bản thân S cũng là một xâu đẩy vòng của S.
Yêu cầu: Cho xâu ngoặc S có độ dài không quá 1000. Hãy xác định có tồn tại một xâu đẩy vòng của S là xâu ngoặc đúng hay không và đưa ra câu trả lời Yes hoặc No.
Dữ liệu: Vào từ file văn bản BRACKETS.INP gồm một dòng chứa xâu S.
Kết quả: Đưa ra file văn bản BRACKETS.OUT câu trả lời Yes hoặc No.
Ví dụ
BRACKETS.OUT |
Yes |
BRACKETS.INP |
} {} (){ |