您的位置:首页 > 其它

括号匹配问题

2015-09-14 15:55 204 查看
/*括号配对问题:第一行输入一个数N(0<N<=100),表示有N组测试数据。*/
/*后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),*/
/*测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符。匹配输出yes,否则输出no*/
/*author:dzw*/
/*date:2015-9-14*/
/*解析:用a表示左括号个数,匹配一个a减1.故最后a=0时则匹配成功。*/
/*特例:如果匹配成功字段后下面的首个字符是右括号,用标识b来表示,此时无论后面又多少括号都不匹配成功*/

#include<stdio.h>
#include<string.h>
int main()
{
int n,i,j;
scanf("%d",&n);
int c
;
char num
[10000];
for(i=0;i<n;i++)
{
int a=0,b=1;
scanf("%s",num[i]);
for(j=0;j<strlen(num[i]);j++)
{
switch(num[i][j])
{
case ')':if(a==0) b=0;if(num[i][a-1]=='(') a-=1;break;
case ']':if(a==0) b=0;if(num[i][a-1]=='[') a-=1;break;
case '(':num[i][a]=num[i][j];a+=1;break;
case '[':num[i][a]=num[i][j];a+=1;break;
}
}

if(a!=0|b==0) c[i]=0;
else c[i]=1;

}
for(i=0;i<n;i++)
{
if(c[i]==0) printf("no\n");
else printf("yes\n");
}
return 0;

}


自己测试通过,但是不能Accepted。不知道为什么
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: