B - Parentheses Balance (UVA - 673)

Posted Alpacaddhh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了B - Parentheses Balance (UVA - 673)相关的知识,希望对你有一定的参考价值。

- 题目大意

     给出两个字符()【】,然后根据给的条件来判断。

- 解题思路

    根据给的三个条件,然后利用栈来处理,对于暂时没有后括号匹配的前括号压入栈,遇到后括号时看栈顶的前括号与其是否匹配,如果匹配则弹出该前括号。还要判断下最后栈里面是不是有剩下的没有匹配的前括号。(注意空字符也行)

- 代码

#include<iostream>
#include<stack>
#include<cstring>

using namespace std;

int main()
{
	int x;
	char c[200];
	cin >> x;
	getchar();
	while (x--)
	{
		stack<char>num;
		gets(c);
		if (strcmp(c, "\n") == 0)
		{
			cout << "Yes" << endl;
			continue;
		}
		int a = strlen(c);
		for (int i = 0; i<a; i++)
		{
 		   if (c[i] == ‘(‘||c[i]==‘[‘)
			{
				num.push(c[i]);
				continue;
			}
		   else if (num.empty())
		   {
			   num.push(c[i]);
		   }
		   else if (c[i] == ‘)‘&&num.top()==‘(‘|| c[i] == ‘]‘&&num.top() == ‘[‘)
				{
					num.pop();
				}
				else
				{
					num.push(c[i]);
					break;
				}
			}
		
		if (num.empty())
			cout << "Yes" << endl;
		else
		   cout << "No" << endl;
			
	}

	return 0;
}

  

以上是关于B - Parentheses Balance (UVA - 673)的主要内容,如果未能解决你的问题,请参考以下文章

Week 1 # E Parentheses Balance

chapter6 数据结构基础之习题 Parentheses Balance

习题6_1 平衡的括号(Parentheses Balance, UVa 673)

习题6_1 平衡的括号(Parentheses Balance, UVa 673)

UVA 637 Parentheses Balance(栈)

UVa673 Parentheses Balance (栈)