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.

Câu hỏi trong lớp Xem thêm