栈的基本题型 前括号1进栈,后括号1出栈,有后括号那么他的前面必然是前括号。
1 #include <iostream> 2 3 using namespace std; 4 #include<stack> 5 #include<stdio.h> 6 #include<math.h> 7 #include<string.h> 8 int main() 9 { 10 11 12 char a[130]; 13 int t; 14 cin>>t; 15 gets(a); 16 while(t--) 17 { 18 stack<int>s; 19 gets(a); 20 int flag =1; 21 int lena=strlen(a); 22 for(int i=0;i<lena;i++) 23 { 24 if(a[i]=='(') 25 s.push(1); 26 else if(a[i]=='[') 27 s.push(2); 28 else if(a[i]==')') 29 { 30 if(s.empty()||s.top()!=1) 31 { 32 flag=0; 33 break; 34 } 35 else if(s.top()==1) 36 s.pop(); 37 } 38 else if(a[i]==']') 39 { 40 if(s.empty()||s.top()!=2) 41 { 42 flag=0; 43 break; 44 } 45 else if(s.top()==2) 46 s.pop(); 47 } 48 } 49 if(!s.empty()||flag==0) 50 cout<<"No"<<endl; 51 else 52 cout<<"Yes"<<endl; 53 } 54 return 0; 55 }