括号配对 栈
#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;
}