括号配对 栈

 
#include <stdio.h>
#include <string.h>
char a[11000],b[21000];
int main()
{   int n,m,i,j,btop;
    scanf("%d",&n);
    while(n--)
    {
      memset(a,0,sizeof(a));
      memset(b,0,sizeof(b));
      scanf("%s",a);
      m=strlen(a);
      btop=1;
      j=0;
      if(m&1)
      printf("No\n");
      else
        {  for(i=0;i<m;i++)
           {
              if(a[i]=='['||a[i]=='(')
               {  if (a[i]=='[')
                      b[btop++]='[';
                  else
                      b[btop++]='(';
                  //printf("%c,",b[--btop]);
                } 
              else if(a[i]==']'||a[i]==')')
                {
                    --btop;
                   if((a[i]==']'&&b[btop]=='[')||(a[i]==')'&&b[btop]=='('))
                   { 
                        j++;
                      
                   }
              }
           }       
         // printf("%d %c\n",j,b[btop]);
           if(j==m/2)
           printf("Yes\n");
           else
           printf("No\n");
        }
    }
    return 0;
}
       

posted @ 2013-08-12 21:54  hpu张亚飞  阅读(138)  评论(0编辑  收藏  举报