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

                    

    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:

  • 相关阅读:
    bzoj1066: [SCOI2007]蜥蜴
    bzoj3504: [Cqoi2014]危桥
    bzoj2756: [SCOI2012]奇怪的游戏
    bzoj1570: [JSOI2008]Blue Mary的旅行
    Ultra-QuickSort
    Bin Packing
    Watering Grass
    区间覆盖
    抄书 Copying Books UVa 714
    分馅饼 Pie
  • 原文地址:https://www.cnblogs.com/lipu123/p/12143845.html
Copyright © 2011-2022 走看看