首页 > 其他分享 >【洛谷 P1739】表达式括号匹配 题解(栈)

【洛谷 P1739】表达式括号匹配 题解(栈)

时间:2023-10-07 15:04:38浏览次数:43  
标签:输出 ch 洛谷 括号 题解 样例 P1739 匹配 表达式

表达式括号匹配

题目描述

假设一个表达式有英文字母(小写)、运算符(+-*/)和左右小(圆)括号构成,以 @ 作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则输出 YES;否则输出 NO。表达式长度小于 【洛谷 P1739】表达式括号匹配 题解(栈)_括号匹配,左圆括号少于 【洛谷 P1739】表达式括号匹配 题解(栈)_ios_02 个。

输入格式

一行:表达式。

输出格式

一行:YESNO

样例 #1

样例输入 #1

2*(x+y)/(1-x)@

样例输出 #1

YES

样例 #2

样例输入 #2

(25+x)*(a*(a+b+b)@

样例输出 #2

NO

提示

表达式长度小于 【洛谷 P1739】表达式括号匹配 题解(栈)_括号匹配,左圆括号少于 【洛谷 P1739】表达式括号匹配 题解(栈)_ios_02 个。

思路

输入字符,如果是左括号,将其入栈;如果是右括号,先判定栈是否为空,栈空说明不匹配输出No,栈非空则栈顶出栈。直到输入的字符为@时,跳出循环。如果栈空说明括号匹配,输出Yee,否则输出No。

AC代码

#include <iostream>
#include <stack>
#define AUTHOR "HEX9CF"
using namespace std;

int main()
{
    stack<char> s;
    char ch;
    while ((ch = getchar()) != '@')
    {
        if ('(' == ch)
        {
            s.push(ch);
            continue;
        }
        if (')' == ch)
        {
            if (s.empty())
            {
                cout << "NO" << endl;
                return 0;
            }
            else
            {
                s.pop();
                continue;
            }
        }
    }
    if (s.empty())
    {
        cout << "YES" << endl;
    }
    else
    {
        cout << "NO" << endl;
    }
    return 0;
}

标签:输出,ch,洛谷,括号,题解,样例,P1739,匹配,表达式
From: https://blog.51cto.com/HEX9CF/7737836

相关文章

  • ip实验:ospf和isis共存下的问题解决
    一,实验目的:内网正常访问ar4的两个外部静态路由地址二,实验配置思路:引入外部静态后,在ar2上引入带isis里面,会发现ar1是个故障节点(只要是访问外部路由经过该节点时就会发生环路),在ar1上拒绝对应的isis路由的加表(不是双点双向啊,因为ar1上有isis进程,isis的路由表会和ospf路由表抢着加入......
  • 【倍增】ABC212F Greedy Takahashi 题解
    ABC212F暴力就是直接跳,显然不可过。考虑对暴力进行优化,发现整个图是不会改变的,容易想到使用倍增。显然是对边进行倍增的,令\(f_{i,j}\)表示从第\(i\)条边开始,跳了\(2^j\)条边后,到的是哪一条边,如果不存在,则设为\(-1\)。然后就是很显然的倍增了,最后讨论一下即可。时间复......
  • 【主席树】P8201 [传智杯 #4 决赛] [yLOI2021] 生活在树上(hard version)题解
    P8201简单题。题中求的是\(dis_{a,t}\oplusdis_{t,b}=k\)是否存在,显然不好直接维护,考虑转化。令\(dist=dis_{a,t}\oplusdis_{t,b}\),\(val=\bigoplus\limits_{x\in\text{path}(a,b)}w_x\)。如果\(t\)在\(\text{path}(a,b)\)上,则\(dist=val\oplus......
  • 【二分图】CF1139E Maximize Mex 题解
    CF1139E翻译中有一句话:校长将会从每个社团中各选出一个人。就是一些人被分为一组,从每组中选一些人出来。这就很容易想到通过二分图的匹配。\(\text{mex}\)运算有一个显而易见的贪心:枚举每个值能否被匹配,第一个找不到的值就是答案。由于\(\text{mex}\)运算的值域与\(n\)......
  • 网络规划设计师真题解析--TCP慢启动拥塞避免机制
    TCP使用慢启动拥塞避免机制进行拥塞控制。当拥塞窗口大小为16时,发送节点出现超时未收到确认现象时,将采取的措施是(26)。再经过5轮后的拥塞窗口大小为(27)。26、A.将慢启动阈值设为16,将拥塞窗口设为8,并进入拥塞避免阶段B.将慢启动阈值设为16,将拥塞窗口设为1,并进入慢开始阶段C.将慢启动......
  • 网络规划设计师真题解析--TCP慢启动拥塞避免机制
    TCP使用慢启动拥塞避免机制进行拥塞控制。当拥塞窗口大小为16时,发送节点出现超时未收到确认现象时,将采取的措施是(26)。再经过5轮后的拥塞窗口大小为(27)。26、A.将慢启动阈值设为16,将拥塞窗口设为8,并进入拥塞避免阶段B.将慢启动阈值设为16,将拥塞窗口设为1,并进入慢开始阶段C.将慢启动阈......
  • [题解] CF1245D - Shichikuji and Power Grid
    CF1245D-ShichikujiandPowerGrid题目传送门题意在一个网格图中,有\(n\)个城市。目标是使得\(n\)个城市都通电。对于一个城市有电,要么选择在其位置建立发电站,要么和另一个有电的城市连线。对于城市\(i\),在其位置建立发电站的费用为\(c_i\),和另一个城市\(j\)连电......
  • 【题解】洛谷#P7073 [CSP-J2020] 表达式
    【题解】洛谷#P7073[CSP-J2020]表达式Description给定一个逻辑表达式和其中每一个操作数的初始取值后,再取反某一个操作数的值时,求出原表达式的值。表达式将采用后缀表达式的方式输入。Solution根据题目可得,当取反一个操作数的值时,整个表达式大体只有变与不变两种情况,而往下......
  • CF1010C Border 题解
    题目传送门前置知识最大公约数|裴蜀定理简化题意给定一个长度为\(n\)的序列\(a\),求能用\(r=(\sum\limits_{i=1}^{n}d_ia_i)\bmodk\)表示的不同的\(r\)的个数及所有情况,其中对于每一个\(i(1\lei\len)\)均有\(d_i\)为非负整数。解法依据裴蜀定理,不难得到存......
  • CF131D Subway 题解
    题目传送门前置知识强连通分量|最短路解法考虑用Tarjan进行缩点,然后跑最短路。缩点:本题的缩点有些特殊,基于有向图缩点修改而得,因为是无向图,所以在Tarjan过程中要额外记录一下从何处转移过来,防止在同一处一直循环。基环树上找环还有其他方法,这里仅讲解使用Tarjan求......