代码如下:
1 #include<cstdio> 2 #include<stack> 3 using namespace std; 4 const int MAXN = 1000; 5 char s[MAXN]; 6 int n; 7 8 int main() 9 { 10 while(scanf("%s",s)==1) 11 { 12 stack <char> q; 13 int ok=1,i=0; 14 while(1) 15 { 16 if(!q.empty()&&s[i]=='\0'){ok=0;break;} 17 if(q.empty()&&s[i]=='\0'){break;} 18 if(q.empty()&&s[i]==')'){ok=0;break;} 19 if(q.empty()&&s[i]==']'){ok=0;break;} 20 if((s[i]=='(')||(s[i]=='[')){q.push(s[i]);} 21 if(!q.empty()) 22 { 23 if((q.top()=='('&&s[i]==')')||(q.top()=='['&&s[i]==']')){q.pop();} 24 else if((q.top()=='('&&s[i]==']')||(q.top()=='['&&s[i]==')')){ok=0;break;} 25 } 26 i++; 27 } 28 printf("%s\n", ok ?"yes":"no"); 29 } 30 return 0; 31 }