UVA - 673:Parentheses Balance

Parentheses Balance

标签:

来源:

参考资料:

相似题目:

题目

You are given a string consisting of parentheses () and []. A string of this type is said to be correct:
l if it is the empty string
l if A and B are correct, AB is correct,
l if A is correct, (A) and [A] is correct.
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.

输入

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

输出

A sequence of ‘Yes’ or ‘No’ on the output file.

输入样例

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

输出样例

Yes
No
Yes

参考代码

#include
#include
#include
using namespace std;
const int maxn=128+5;
int main()
{
	int n;
	scanf("%d",&n);
	getchar();//读入换行 
	for(int i=0;i<n;i++)
	{
		stack<int> sta;
		char arr[maxn];
		bool judge=true;
		gets(arr);
		for(int j=0;j<strlen(arr);j++)
		{
			if(arr[j]=='(' || arr[j]=='[')
			{
				sta.push(arr[j]);
				continue;
			}
			
			if(!sta.empty() && (arr[j]==')' && sta.top()=='(' || arr[j]==']' && sta.top()=='['))
				sta.pop();
			else
			{
				judge=false;
				break;
			}
		}
		if(judge && sta.empty())printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}

你可能感兴趣的:(【记录】算法题解)