【问题描述】
假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。表达式长度小于255,左圆括号少于20个。
【输入文件】
输入文件stack.in包括一行数据,即表达式,
【输出文件】
输出文件stack.out包括一行,即“YES” 或“NO”。
【样例输入1】
2*(x+y)/(1-x)@
【样例输出1】
YES
【样例输入2】
(25+x)*(a*(a+b+b)@
【样例输出2】
NO
#include<iostream> #include<cstring> #include<string> #include<algorithm> #include<cstdlib> #include<cstdio> using namespace std; char a[256]; int pop(char a[256]) { int i=0,top=0; while(i<=strlen(a)-2) { if(a[i]=='(') { top++; } if(a[i]==')') { if(top>0)top--; else return 0; } i++; } if(top!=0)return 0; return 1; } int main() { gets(a); if(pop(a))cout<<"YES"; else cout<<"NO"; return 0; }