• 表达式括号匹配(栈)


                    

    P1739 表达式括号匹配

    网站链接;https://www.luogu.com.cn/problem/P1739

    假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。表达式长度小于255,左圆括号少于20个。

    输入格式

    一行:表达式

    输出格式

    一行:“YES” 或“NO”

    输入输出样例

    输入 #1
    2*(x+y)/(1-x)@
    
    输出 #1
    YES
    输入 #2
    (25+x)*(a*(a+b+b)@
    
    输出 #2
    NO

    说明/提示

    表达式长度小于255,左圆括号少于20个

    AC代码1:

    #pragma GCC optimize(2)
    #include<bits/stdc++.h>
    using namespace std;
    inline int read() {int x=0,f=1;char c=getchar();while(c!='-'&&(c<'0'||c>'9'))c=getchar();if(c=='-')f=-1,c=getchar();while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return f*x;}
    typedef unsigned long long ll;
    const int maxn = 1e6+10;
    char a[300];
    int main()
    {
        scanf("%s",a);
        int t=strlen(a);
        int j=0;
        int flag=0;
        for(int i=0;i<t;i++){
            if(a[i]=='('){
                j++;
            }
            else if(a[i]==')'){
                j--;
            }
            if(j<0){
                flag=1;
                break;
            }
        }
        if(flag==1||j!=0){
            printf("NO
    ");
        }
        else{
            printf("YES
    "); 
        }
        return 0;
    }
    View Code

    AC代码2:

  • 相关阅读:
    hdu1251统计难题(trie树)
    线段树
    poj2632Crashing Robots
    UVA10194 Football (aka Soccer)
    hdu1166敌兵布阵(线段树)
    【洛谷P3810】【模板】三维偏序(陌上花开)
    【洛谷P2480】古代猪文
    【洛谷P3449】PALPalindromes
    【洛谷P4777】扩展中国剩余定理(EXCRT)
    【洛谷P2421】荒岛野人
  • 原文地址:https://www.cnblogs.com/lipu123/p/12143845.html
Copyright © 2020-2023  润新知