Thứ Ba, 9 tháng 7, 2019

Kiểm tra ngoặc đơn đúng NGOAC

Xét xâu S chỉ bao gồm các kí tự ngoặc mở ‘(‘ và ngoặc đóng ‘)’. Xâu S xác định một cách đặt ngoặc đúng, nếu thỏa mãn các điều kiện:
· 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ố đóng phải nhỏ hơn hoặc bằng số ngoặc mở
Yêu cầu: cho biết một xâu s có là một cách đặt ngoặc đúng không?
Input
· Dòng dầu là số test t (0 < t < 100)
· t dòng sau, mỗi dòng 1 xâu s không quá 200 kí tự.
Output: t dòng, mỗi dòng là kết quả 1 test tương ứng, xuất “YES” nếu cách đặt ngoặc đúng, ngược lại xuất “NO”
Input
5
(())
()()
(((())
))((
(()))(()
Output
YES
YES
NO
NO
NO

3 nhận xét:

  1. Uses crt;
    Var n,n2,i,j:longint;
    s:string;
    function test(s:string):string;
    Begin
    n:=0;
    For i:=1 to length(s) do
    Begin
    If s[i]='(' then n:=n+1 else n:=n-1;
    If n<0 then exit('No');
    end;
    If n=0 then exit('Yes') else exit('No');
    end;
    Begin
    readln(n2);
    For j:=1 to n2 do
    Begin
    readln(s);
    Writeln('---',test(s),'---');
    end;
    readln;
    end.

    Trả lờiXóa
    Trả lời
    1. Bài bạn làm chưa đúng bạn hãy thử chạy vd này
      inp
      )(
      out
      No
      Còn nếu bạn chạy ra yes thì bài bạn sai

      Xóa
  2. program p;
    uses crt;
    var s:string;
    i,n:longint;
    function kq(s:string):string;
    var t,i:integer;
    begin
    t:=0;
    begin
    for i:=1 to length(s) do
    if s[i]='(' then t:=t+1 else t:=t-1;
    end;
    if t=0 then exit('yes') else exit('no');
    end;
    begin
    clrscr;
    readln(n);
    for i:=1 to n do
    begin
    readln(s);
    writeln(kq(s));
    end;
    readln;
    end.

    Trả lờiXóa

Dùng nick gmail để bình luận. Nếu lần đầu tiên bạn làm điều này thì hệ thống sẽ chuyển bạn sang trang blogger và hỏi bạn chọn tên hiển thị là gì. Bạn hãy nhập tên hiển thị rồi ok là được. Những lần bình luận sau hệ thống sẽ không hỏi nữa. Cảm ơn!

Bài được xem nhiều nhất