您的位置:首页 > 其它

uva 673 Parentheses Balance

2016-08-25 13:55 323 查看
原题:

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

(a) if it is the empty string

(b) if A and B are correct, AB is correct,

(c) 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.

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

中文:

就是括号匹配问题。注意数据要一行一行读!

#include <bits/stdc++.h>
using namespace std;

int main()
{
//  ios::sync_with_stdio(false);
int t;
stack<char> sc;
scanf("%d",&t);getchar();
char s[1000];
while(t--)
{
gets(s);
int len=strlen(s);
if(len==0)
{
printf("Yes\n");
continue;
}
if(len%2)
{
printf("No\n");
continue;
}
while(!sc.empty())
sc.pop();
int i=0;
while(i!=len)
{
if(sc.empty())
sc.push(s[i]);
else
{
if((sc.top()=='('&&s[i]==')')||(sc.top()=='['&&s[i]==']'))
sc.pop();
else
sc.push(s[i]);
}
i++;
}
if(sc.empty())
printf("Yes\n");
else
printf("No\n");
}

return 0;
}


解答:

我被这题wa了5次,空串处理的时候一定要一行一行度,不能是字符串为0那样判断!

剩下的就是栈的模拟就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: