题目描述
给定一个运算表达式,其中会包括’+‘,’-‘,’*‘,’/‘、各种数字和括号。括号的类型有三种小括号“()”、中括号“[]”、花括号“{}”,请你分析,在这个表达式中,括号是否匹配,如果匹配,请输出YES,如果不匹配,请输出NO. 字符串以字符’@'结尾。
输入格式
一个以‘@’结尾的字符串。
输出格式
YES或者NO。
样例
输入样例
22*{345*6+[(3-2)*5]/2-1}@
输出样例
YES
代码
#include <iostream>
using namespace std;
int main()
{
char c[305],x;
int top=0;
while(cin >> x)
{
if(x=='@') break;
if(x=='{'||x=='['||x=='(') c[top++]=x;
else if(x=='}'||x==']'||x==')')
{
if(x=='}'&&c[top-1]=='{') top--;
else if(x==']'&&c[top-1]=='[') top--;
else if(x==')'&&c[top-1]=='(') top--;
else
{
cout << "NO";
return 0;
}
}
}
if(top==0) cout << "YES";
else cout << "NO";
return 0;
}