您的位置:首页 > 其它

括号匹配

2015-10-25 11:19 218 查看
#include <stdio.h>
#include <string.h>

char a[31],name[31];
int b[31],num,top;
void getname()
{
int i,popnum;
char tmp;
popnum = 0;
for(i = 0; name[i] != 0; i++)
{
if(name[i] == '[' ||name[i] == '(')
{
a[++top] = name[i];
}
else
{
if(name[i] == ']' && a[top] == '[' )
{
if(b[top+1] == 0)
b[top] = 3 + b[top];
else
{
b[top] = 3* b[top+1] +b[top];
b[top+1] = 0;
}
top--;
}
else if(name[i] ==')' && a[top] == '(')
{
if(b[top+1] == 0)
b[top] = 2 + b[top];
else
{
b[top] = 2* b[top+1]+b[top];
b[top+1] = 0;
}
top--;
}
else
{
num = 0;
break;
}
}
}
if(a[top] != 0)
b[top+1] = 0;
}

int main(void)
{
int tc, T;
freopen("input.txt", "r", stdin);
setbuf(stdout, NULL);

scanf("%d", &T);
for(tc = 0; tc < T; tc++)
{
memset(name, 0, sizeof(name));
memset(b, 0, sizeof(b));
scanf("%s", name);
top = num = 0;
getname();
printf("%d\n", b[top+1]);
}

return 0;//Your program should return 0 on normal termination.
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  括号匹配