Một biểu thức số học chứa dấu mở ngoặc ‘(‘ và đóng ngoặc ‘)’ xác định một cách đặt ngoặc đúng, nếu thỏa mãn các điều kiện sau: - Tổng số ngoặc đóng = tổng số ngoặc mở - Đi từ trái qua phải, ở bất cứ vị trí nào số ngoặc đóng phải nhỏ hơn hoặc bằng số ngoặc mở Yêu cầu: Em hãy xác định một biểu thức số học có phải là một cách đặt ngoặc đúng không? Input: Cho bởi tệp CAU2.INP có cấu trúc như sau: - Dòng dầu là số test n (0 < n < 100) - n dòng tiếp theo, mỗi dòng là một dãy các biểu thức số học. Output: Cho bởi tệp CAU2.OUT Gồm n dòng, mỗi dòng là kết quả một test tương ứng, xuất “YES” nếu cách đặt ngoặc đúng, ngược lại xuất “NO” Ví dụ: CAU2.INP CAU2.OUT 3 YES 2(3+5) YES (2x+1)(4y+2) NO (2x-1))(3y-2) GIẢI THÍCH Ý TƯỞNG
1 câu trả lời
uses crt;
var t: longint;
function solve: string;
var i, cnt: longint;
ss: ansistring;
begin
readln(ss); cnt:=0;
for i:=1 to length(ss) do begin
if ss[i] = '(' then inc(cnt);
if ss[i] = ')' then dec(cnt);
if cnt < 0 then exit('NO');
end;
if cnt > 0 then exit('NO'); exit('YES');
end;
begin
readln(t);
while t > 0 do begin
dec(t);
writeln(solve);
end;
readln;
end.