nyoj 括號配對

描述現在,有一行括號序列,請你檢查這行括號是否配對。輸入第一行輸入一個數N(0<N<=100),表示有N組測試數據。後面的N行輸入多組輸入數據,每組輸入數據都是一個字符串S(S的長度小於10000,且S不是空串),測試數據組數少於5組。數據保證S中只含有"[","]","(",")"四種字符輸出每組輸入數據的輸出佔一行,如果該字符串中所含的括號是配對的,則輸出Yes,如果不配對則輸出No樣例輸入3[(])(])([[]()])樣例輸出NoNoYes--------------------------------------------------------------------------------------------------------------------------

#include<stdio.h>
#include<string.h>
int main()
{
char a[10010],b[10010];
int top,i;
int len;
int t;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
scanf("%d",&t);
while(t--)
{
scanf("%s",a);
top=1;
b[top++]=a[0];
len = strlen(a);
for(i=1;i<len;i++)
{
if(a[i]=='['||a[i]=='(')
{
b[top++] = a[i];
}
else 
{
if(a[i]==']'&&b[top-1]=='[')
top--;
else if(a[i]==')'&&b[top-1]=='(')
top--;
else
b[top++] = a[i];//後面也可能有左括號
}
}
if(top==1)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章