您的位置:首页 > 其它

fjnu 1738 括号匹配检验

2008-02-16 20:43 288 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: