码迷,mamicode.com
首页 > 其他好文 > 详细

B - Parentheses Balance (UVA - 673)

时间:2018-02-10 14:04:58      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:ios   end   names   ring   bsp   遇到   strcmp   处理   gets   

- 题目大意

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

- 解题思路

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

- 代码

#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)

标签:ios   end   names   ring   bsp   遇到   strcmp   处理   gets   

原文地址:https://www.cnblogs.com/alpacadh/p/8438480.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!