UVa 673 Parentheses Balance (栈)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


673 - Parentheses Balance

Time limit: 3.000 seconds

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=103&page=show_problem&problem=614

You are given a string consisting of parentheses () and []. A string of this type is said to be correct:


if it is the empty string (b) if A and B are correct, AB is correct, (c) (A ) and  [A ]

Write a program that takes a sequence of strings of this type and check their correctness. Your program can assume that the maximum string length is 128.

Input


The file contains a positive integer  n  and a sequence of  n  strings of parentheses  ()  and  [] , one string a line.

Output


A sequence of  Yes  or  No  on the output file.

Sample Input


3
([])
(([()])))
([()[]()])()


Sample Output

Yes
No
Yes



技巧:在栈底加一个元素,减少代码量。


完整代码:

/*0.029s*/

#include<cstdio>
#include<cstring>
#include<stack>
using namespace std;

stack<char> s;
char str[130];

int main(void)
{
	int t;
	scanf("%d", &t);
	getchar();
	while (t--)
	{
		gets(str);
		int len = strlen(str);
		if (len & 1)
			puts("No");
		else
		{
			if (!s.empty())
				s.pop();
			s.push('0');///“记号”
			for (int i = 0; i < len; ++i)
			{
				if (str[i] == '(' || str[i] == '[')
					s.push(str[i]);
				else if (str[i] == ')')
				{
					if (s.top() == '(')
						s.pop();
					else
					{
						s.push('1');
						break;
					}
				}
				else/// ']'
				{
					if (s.top() == '[')
						s.pop();
					else
					{
						s.push('1');
						break;
					}
				}
			}
			puts(s.top() == '0' ? "Yes" : "No");
		}
	}
	return 0;
}



阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“UVa 673 Parentheses Balance (栈)” 的相关文章

接收输入string转char数组

#include<iostream> #include<string> using namespace std; int main() { string str; cin >> str; const char *c...

通过spring-boot-maven-plugin package失败问题怎么解决 - 开发技术

这篇文章主要介绍“通过spring-boot-maven-plugin package失败问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“通过spring-boot-maven-plugin pa...

golang定时器Timer的用法和实现原理是什么 - 开发技术

本篇内容介绍了“golang定时器Timer的用法和实现原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!TimerTimer是一种单一事件的定时器,即经过指定的...

php数据库如何修改字段位置 - 编程语言

本文小编为大家详细介绍“php数据库如何修改字段位置”,内容详细,步骤清晰,细节处理妥当,希望这篇“php数据库如何修改字段位置”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 首先,我们需要连接到数据库。在连接到...

【优化】Codeforces Beta Round #1 / 1B Spreadsheets (字符串处理)_codeforcesdiv1

B. Spreadsheets http://codeforces.com/problemset/problem/1/B time limit per test memory limit per test input...

怎么用上下文管理器扩展Python计时器 - 编程语言

本文小编为大家详细介绍“怎么用上下文管理器扩展Python计时器”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用上下文管理器扩展Python计时器”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 一个 Pyt...