1204:括号配对问题

来源:互联网 发布:网络校时软件 编辑:程序博客网 时间:2024/05/17 18:47

1204:括号配对问题


Description


现在,有一行括号序列,请你检查这行括号是否配对。


Input


第一行输入一个数N(N<=1000)后面是N行由[]()组成的括号序列。


Output


每组输入数据占一行,如果该字符中所含的括号是配对的,则输出Yes,如果不配对则输出No。


Sample Input

3

[(])

(])

([[]()])


Sample  Output


No

No

Yes


Source


#include<cstdio>      #include<cstring>      int main()      {          int top,i,T;          char a[10010],stack[10010];          scanf("%d",&T);          while(T--)          {   scanf("%s",a);              top=1;                         //top所指向b数组下标的下一位              stack[top++]=a[0];                         for(i=1; i<strlen(a); i++)              {                  if(a[i]=='('||a[i]=='[')  //此种情况,进栈                       stack[top++]=a[i];                  else if(a[i]==')'&&stack[top-1]=='(')  //出栈,其实也就是对stack数组栈顶元素的覆盖                      top--;                          else if(a[i]==']'&&stack[top-1]=='[')                       top--;                   else                 {                             //剩下的两种情况都要进栈                       stack[top++]=a[i];                                  }              }              if(top==1)                  printf("Yes\n");              else                 printf("No\n");          }          return 0;      }   


原创粉丝点击