习题6-1 平衡的括号

代码如下:

 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 }

猜你喜欢

转载自www.cnblogs.com/RickDriver/p/12217190.html
6-1