现在的位置: 首页 > 综合 > 正文

NYOJ2——括号匹配问题

2017年11月21日 ⁄ 综合 ⁄ 共 573字 ⁄ 字号 评论关闭

题目描述:http://acm.nyist.net/JudgeOnline/problem.php?pid=2

就是输入一串括号,看顺序是不是匹配的。如果括号数是奇数,肯定不匹配啦~这里用到的数据结构的栈,每次比较当前括号与栈顶括号是否匹配,匹配则栈顶元素出栈,否则当前括号入栈。最后检查栈是否为空,为空的话说明全部匹配了。

#include<stdio.h>
#include<string.h>

char str[10005];
char stack[10005];
bool check()
{
	int nLen;
	int top = -1;
	nLen = strlen(str);
	if(nLen & 1)
		return false;
	for(int i = 0; i < nLen; ++i)
	{
		if(top > -1 && ((str[i] == ']' && stack[top] == '[') || (str[i] == ')' && stack[top] == '(')))
			--top;
		else
			stack[++top] = str[i];
	}

	if(top < 0)
		return true;
	else
		return false;
}

int main()
{
	int t;
	scanf("%d",&t);
	getchar();
	while(t--)
	{
		gets(str);
		if(check())
			printf("Yes\n");
		else
			printf("No\n");
	}
}

抱歉!评论已关闭.