烟大 2238: 括号匹配(栈和队列)
来源:互联网 发布:最新网络诈骗新闻2017 编辑:程序博客网 时间:2024/05/16 15:41
2238: 括号匹配(栈和队列)
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2 Solved: 2
[Submit][Status][Web Board]
Description
假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”,方括号“[”和“]”和花括号“{”和“ ”,且这三种括号可按任意的次序嵌套使用(如:…[…{… …[…]…]…[…]…(…)…)。编写判别给定表达式中所含括号是否正确配对出现的算法。输出结果YES 或者 NO。
Input
5+{[2X5]+2}
Output
YES
Sample Input
8-[{2+7]}
Sample Output
NO
HINT
Source
Code:
1 /* 2 所用操作函数: 3 empty() 堆栈为空则返回真 4 pop() 移除栈顶元素 5 push() 在栈顶增加元素 6 top() 返回栈顶元素 7 */ 8 #include <iostream> 9 #include <stack>10 #include <string.h>11 using namespace std;12 int main()13 {14 string l;15 while(cin>>l){16 stack <char> s; //放到循环外定义就错了,每次循环都要初始化17 bool f=true;18 for(int i=0;i<l.length();i++){19 switch(l[i]){20 case '(':s.push('(');break;21 case '[':s.push('[');break;22 case '{':s.push('{');break;23 case ')':if(s.top()!='(') f=false; //如果栈顶元素值与当前字符括号匹配则将匹配的前括号出栈24 else s.pop();25 break;26 case ']':if(s.top()!='[') f=false;27 else s.pop();28 break;29 case '}':if(s.top()!='{') f=false;30 else s.pop();31 break;32 default:break;33 }34 if(!f) break;35 }36 if(!s.empty()) f=false; //判断是否栈空37 if(f)38 cout<<"YES"<<endl;39 else40 cout<<"NO"<<endl;41 }42 return 0;43 }
Freecode : www.cnblogs.com/yym2013
0 0
- 烟大 2238: 括号匹配(栈和队列)
- YTU 2238: 括号匹配(栈和队列)
- 栈和队列---括号匹配
- [栈和队列]括号匹配
- 括号匹配(栈和队列)
- 【数据结构】 栈和队列 YTU 2238 括号匹配(栈
- YTU OJ 2238: 括号匹配(栈和队列)
- 栈和队列应用之括号匹配
- C数据结构-栈和队列,括号匹配举例---ShinePans
- 数据结构栈和队列的括号匹配函数
- YTU 3003: 括号匹配(栈和队列)
- Problem C: 括号匹配(栈和队列)
- Problem C: 括号匹配(栈和队列)
- 大括号匹配和字体修改
- 寒假第三天--栈和队列--数据结构实验之栈四:括号匹配 (栈)
- 寒假第三天--栈和队列--数据结构实验之栈四:括号匹配 (数组)
- 数据结构复习_栈和队列,应用_括号匹配&文件目录递归拷贝,
- (括号匹配,栈,队列)湘大校赛,H.括号匹配
- 数据结构 —— 递归和树
- 杭电 2041 超级楼梯
- 杭电 2044 一只小蜜蜂...
- 杭电 2050 折线分割平面
- 杭电 1018 Big Number
- 烟大 2238: 括号匹配(栈和队列)
- 烟大 2239: 十进制与八进制的转换(栈和队列)
- android 的四种枚举Context.MODE_PRIVATE
- 烟大 2241: 相同序列(栈和队列)
- 烟大 2242: 回文(栈和队列)
- 假期数据结构学习总结
- 那些零碎的感悟,那些成长的事【壹】
- 那些零碎的感悟,那些成长的事【贰】
- 程序设计实践与提高1 - 学习记录