Description
输入含圆括号的表达式形式串,判断其是否符合表达式格式,是则输出YES,否则输入NO。
Input
字符串
Output
YES或NO(其前后不留空格,也不输出回车)
Sample Input
(1+23+(12)+234+((((67)))))
Sample Output
YES
KEY:用栈结构处理;
include<iostream> using namespace std; class Stack { char elem[100]; int top; int base; public: Stack() { top=base=1; } void push(char x); char pop(); int empty(); }; void Stack::push(char x) { elem[top++]=x; } char Stack::pop() { char x; x=elem[--top]; return x; } int Stack::empty() { if(base==top) return 1; else return 0; } char str[100]; int fun() { Stack S; int i; for(i=0;str[i]!='/0';i++) { if(str[i]=='('||str[i]==')') { if(S.empty()==1&&str[i]==')') return 0; else { if(str[i]=='(') { S.push(str[i]); } else { S.pop(); } } } else continue; } if(!S.empty()) return 0; else return 1; } int main() { // freopen("fjnu_1738.in","r",stdin); gets(str); if(fun()) cout<<"YES"<<endl; else cout<<"NO"<<endl; }