(栈 注意格式)P1739 表达式括号匹配 洛谷

mac2022-06-30  97

题目描述

假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“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\n"); return 0; } s.pop(); } } if(!s.empty()) printf("NO\n"); else printf("YES\n"); return 0; }

 

转载于:https://www.cnblogs.com/Weixu-Liu/p/10579219.html

相关资源:垃圾分类数据集及代码
最新回复(0)