• 烟大 2238: 括号匹配(栈和队列)


    2238: 括号匹配(栈和队列)

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 2  Solved: 2
    [Submit][Status][Web Board]

    Description

    假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”,方括号“[”和“]”和花括号“{”和“ ”,且这三种括号可按任意的次序嵌套使用(如:…[{… …[]][]())。编写判别给定表达式中所含括号是否正确配对出现的算法。输出结果YES 或者 NO。

    Input

    5+{[2X5]+2}

    Output

    YES

    Sample Input

    8-[{2+7]}

    Sample Output

    NO

    HINT

    Source 


     Code:

     1 /*
     2 所用操作函数:
     3 empty() 堆栈为空则返回真
     4 pop()   移除栈顶元素
     5 push()  在栈顶增加元素
     6 top()   返回栈顶元素
     7 */
     8 #include <iostream>
     9 #include <stack>
    10 #include <string.h>
    11 using namespace std;
    12 int main()
    13 {
    14     string l;
    15     while(cin>>l){
    16         stack <char> s; //放到循环外定义就错了,每次循环都要初始化
    17         bool f=true;
    18         for(int i=0;i<l.length();i++){
    19             switch(l[i]){
    20             case '(':s.push('(');break;
    21             case '[':s.push('[');break;
    22             case '{':s.push('{');break;
    23             case ')':if(s.top()!='(') f=false;      //如果栈顶元素值与当前字符括号匹配则将匹配的前括号出栈
    24                     else s.pop();
    25                     break;
    26             case ']':if(s.top()!='[') f=false;
    27                     else s.pop();
    28                     break;
    29             case '}':if(s.top()!='{') f=false;
    30                     else s.pop();
    31                     break;
    32             default:break;
    33             }
    34             if(!f) break;
    35         }
    36         if(!s.empty()) f=false;   //判断是否栈空
    37         if(f)
    38             cout<<"YES"<<endl;
    39         else
    40             cout<<"NO"<<endl;
    41     }
    42     return 0;
    43 }
    View Code

    Freecode : www.cnblogs.com/yym2013

  • 相关阅读:
    汉语编程
    第一次作业
    个人总结
    psp表格
    第三次个人作业——用例图设计
    第二次结对作业
    第一次结对作业
    第二次个人编程作业
    第一次编程作业
    第一次博客作业
  • 原文地址:https://www.cnblogs.com/yym2013/p/3255144.html
Copyright © 2020-2023  润新知