HLOJ_1013

 1  // HLOJ 1013  Accepted  15 196 916 C++  
 2 
 3  // 当调用stack<char>.pop()的时候要注意当前栈是否为空
 4 
 5  #include  < iostream >
 6  #include  < string >
 7  #include  < stack >
 8  using   namespace  std ;
 9 
10  string  instr ;
11 
12  stack < char >  mystack ;
13 
14  int  main()
15  {
16       while ( cin  >>  instr )
17      {
18           while ! mystack.empty() ) mystack.pop() ;
19 
20           bool  OK  =   true  ;
21 
22           string ::iterator posi  =  instr.begin() ;
23           for ( ; posi != instr.end(); posi ++  )
24          {
25               if ! OK )  break  ;
26 
27               if ' ( ' == ( * posi)  ||   ' [ ' == ( * posi) )
28              {
29                  mystack.push(  * posi ) ;
30              }
31               else
32              {
33                   if ( mystack.empty() ) 
34                  {
35                      OK  =   false  ;  break  ;
36                  }
37                   if * posi  ==   ' ) '  )
38                  {
39                       if ( mystack.top()  !=   ' ( '  )        
40                          OK  =   false  ;
41                       else
42                          mystack.pop() ;
43                  }
44                   else   if * posi  ==   ' ] '  )
45                  {
46                       if ( mystack.top()  !=   ' [ '  )
47                          OK  =   false  ;
48                       else
49                          mystack.pop() ;
50                  }                
51              }
52          }
53 
54           if ! mystack.empty() ) OK  =   false  ;
55 
56           if ( OK ) cout  <<   " yes "   <<  endl ;
57           else      cout  <<   " no "    <<  endl ;
58      }
59 
60       return   0  ;
61  }

你可能感兴趣的:(HLOJ_1013)