zoukankan      html  css  js  c++  java
  • 表达式括号匹配(stack.cpp)

    【问题描述】
           假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。表达式长度小于255,左圆括号少于20个。
    【输入文件】
            输入文件stack.in包括一行数据,即表达式,
    【输出文件】
            输出文件stack.out包括一行,即“YES” 或“NO”。
    【样例输入1】
    2*(x+y)/(1-x)@
    【样例输出1】
    YES
    【样例输入2】
    (25+x)*(a*(a+b+b)@
    【样例输出2】
    NO
     
    #include<iostream>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cstdlib>
    #include<cstdio>
    using namespace std;
    char a[256];
    int pop(char a[256])
    {
        int i=0,top=0;
        while(i<=strlen(a)-2)
        {
            if(a[i]=='(')
            {
                top++;
            }
            if(a[i]==')')
            {
                if(top>0)top--;
                else return 0;
            }
            i++;
        }
        if(top!=0)return 0;
        return 1;
    }
    int main()
    {
        gets(a);
        if(pop(a))cout<<"YES";
        else cout<<"NO";
        return 0;
    }
  • 相关阅读:
    [Agc081F/At2699] Flip and Rectangles
    [CF1216C] White Sheet
    stegsolve使用探究
    栅栏密码
    wireshark常用命令
    某团队线下赛AWD writeup&Beescms_V4.0代码审计
    某线下赛AWD
    BBScan — 一个信息泄漏批量扫描脚本
    ISG2018 web题Writeup
    巅峰极客第二场CTF部分writeup
  • 原文地址:https://www.cnblogs.com/sssy/p/6628469.html
Copyright © 2011-2022 走看看