/*#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小时内删除。
发表评论