#include<iostream>
using namespace std;
#define MaxSize 50
typedef struct {
char data[MaxSize];
int top;
} SqStack;
void InitStack(SqStack &S) {
S.top=-1;
}
bool StackEmpty(SqStack S) {
if(S.top==-1)
return true;
else return false;
}
bool Push(SqStack &S,char x) {
if(S.top==MaxSize-1)
return false;
S.data[++S.top]=x;
return true;
}
bool Pop(SqStack &S,char &x) {
if(S.top==-1)
return false;
x=S.data[S.top--];
return true;
}
bool GetTop(SqStack S,char &x) {
if(S.top==-1)
return false;
x=S.data[S.top];
return true;
}
void PrintStack(SqStack S) {
for(int i=S.top; i>=0; i--) {
cout<<S.data[i]<<" ";
}
cout<<endl;
}
//括号匹配
bool bracketCheck(char str[],int length) {
SqStack S;
InitStack(S);
for(int i=0; i<length;i++) {
if(str[i]=='('||str[i]=='['||str[i]=='{') {
Push(S,str[i]);
} else {
if(StackEmpty(S))
return false;
char topElem;
Pop(S,topElem);
if(str[i]==')'&&topElem!='(')
return false;
if(str[i]==']'&&topElem!='[')
return false;
if(str[i]=='}'&&topElem!='{')
return false;
}
}
return StackEmpty(S);
}
int main() {
char ch[20];
int length;
cin>>length;
for(int i=0;i<length;i++){
cin>>ch[i];
}
cout<<bracketCheck(ch,length)<<endl;//0表示不匹配 ,1表示匹配
return 0;
}
12-23
1661
04-18
1655
06-25
195
10-12