/*#include<stdio.h>
#include<string.h>
char s[1000000];
int main()
{
    int i,m,n,j,sum=0;
    scanf("%d",&m);
    getchar();
    for(i=1;i<=m;i++)
    {
        gets(s);
        n=strlen(s);
        sum=0;
        for(j=0;j<n;j++)
        {
            sum+=s[j]-48;
            sum%=9;
        }
        printf("%d\n",sum);
    }
    return 0;
}*/
/*#include<stdio.h>
#include<string.h>
char a[1000000];
int main()
{
    int m;
    scanf("%d",&m);
    while(m--)
    {    getchar();
        int n,sum=0,i;
        scanf("%s",a);
        n=strlen(a);
        for(i=0;i<n;i++)
            sum+=a[i]-48;
        printf("%d\n",sum%9);
    }
    return 0;
}*/
/*#include<stdio.h>
#include<string.h>
char s[43];
int main()
{
    int i,n,m,j;
    scanf("%d",&n);
    getchar();
    for(i=1;i<=n;i++)
    {
        gets(s);
        m=strlen(s);
        for(j=m-1;j>=0;j--)
        {
            if((s[j]>=65&&s[j]<=90)||(s[j]>=97&&s[j]<=122))
                printf("%c",s[j]);
        }
        printf("\n");
    }
    return 0;
}*/
#include<stdio.h>
#include<error.h>
#define maxn 10010
char st[maxn];
typedef struct stack
{
    char ch[maxn];
    int top;
    int size;
}seqstack;
void INITSTACK(seqstack *s)
{
    s->top=-1;
    s->size=maxn;
}
int EMPTYSTACK(seqstack *s)
{
    if(s->top==-1)
        return 1;
    else
        return 0;
}
void PUSH(seqstack *s,char c)
{
        s->top++;
        s->ch[s->top]=c;
}
char POP(seqstack *s)
{
        return (s->ch[s->top--]);
   
}
char GETTOP(seqstack *s)
{
        return (s->ch[s->top]);
}
int main()
{
    int i,n;
    int match(char st[]);
    scanf("%d",&n);
    getchar();
    for(i=1;i<=n;i++)
    {
        gets(st);
        if(match(st)==1)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}
int match(char st[])
{
    int i;
    char ch1;
    seqstack *s1;
    INITSTACK(s1);
    ch1=*st++;
    while(ch1!='\0')
    {
        switch(ch1)
        {
        case '{':
        case '[':
        case'(':
            {
                PUSH(s1,ch1);
                break;
            }
        case '}':
            {
                if(!EMPTYSTACK(s1)&&GETTOP(s1)=='{')
                    i=POP(s1);
                else
                    return 0;
                break;
            }
        case ']':
            {
                if(!EMPTYSTACK(s1)&&GETTOP(s1)=='[')
                    i=POP(s1);
                else
                    return 0;
                break;
            }
        case ')':
            {
                if(!EMPTYSTACK(s1)&&GETTOP(s1)=='(')
                    i=POP(s1);
                else
                    return 0;
                break;
            }
        }
        ch1=*st++;
    }
    if(EMPTYSTACK(s1))
        return 1;
    else
        return 0;
}
 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。