SSL1659 栈练习括弧匹配检验

来源:互联网 发布:mysql linux安装后在哪 编辑:程序博客网 时间:2024/05/01 21:19

栈练习括弧匹配检验

Description

  假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。 
  现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配? 
输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “OK” ,不匹配就输出“Wrong”。 

Input

输入仅一行字符(字符个数小于255)

Output

匹配就输出 “OK” ,不匹配就输出“Wrong”。


分析:遇到左括号就入栈,遇到右括号如果匹配就将栈顶左括号出栈,不匹配就是Wrong。


代码

var
  a:array[0..1000] of char;
  ch:char;
  l:longint;


begin
  while not eoln do
    begin
      read(ch);
     if (ch='[') or (ch='(') then
        begin
          inc(l);
          a[l]:=ch;
        end
      else
        begin
          if ch=']' then if a[l]<>'['
            then begin
                   writeln('Wrong');
                   halt;
                 end
            else dec(l);
          if ch=')' then if a[l]<>'('
            then begin
                   writeln('Wrong');
                   halt;
                 end
            else dec(l);
        end;
    end;
  if (ch='(') or (ch=']') or (l>0) then
    begin
      writeln('Wrong');
      halt;
    end;
  writeln('OK');
end.

0 0
原创粉丝点击