zoukankan      html  css  js  c++  java
  • (栈 注意格式)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个

    emmmm,就是输入和return 0的使用上学习了

    C++代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<stack>
    using namespace std;
    stack<char> s;
    int main(){
        char ch;
        while(scanf("%c",&ch) &&ch != '@'){        //输入一行字符串,以‘@’为结尾。 
            if(ch == '('){
                s.push(ch);
            }
            else if(ch == ')'){
                if(s.empty()){        //需要先判断栈顶是否为‘(’,如果不是,那肯定不对,因为无论如何')'并不是先于'('。另外,不用ch == '( ,因为题目只有括号,而且如果用了,可能会超时. 
                    printf("NO
    ");
                    return 0;
                }
                s.pop();
            }
        }
        if(!s.empty())
            printf("NO
    ");
        else
            printf("YES
    ");
        return 0;
    }
  • 相关阅读:
    微信小程序排坑
    webpack——3.x版本总结
    干货网站
    转码器babel
    es6——之初体验
    移动端适配不同屏幕分辨率——rem布局
    vuejs学习总计——数据传值篇
    vue.js学习总计---路由篇
    vuejs学习总结---基础篇
    vuejs搭建的项目对于ie浏览器的处理
  • 原文地址:https://www.cnblogs.com/Weixu-Liu/p/10579219.html
Copyright © 2011-2022 走看看