Parentheses Balance

来源:互联网 发布:手机视频聊天软件 编辑:程序博客网 时间:2024/06/03 08:37

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. Yourprogram 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 stringa line.

Output

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

Sample Input

3

([])

(([()])))

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

Sample Output

Yes

No

Yes


#include<iostream>#include<stack>#include<cstdio>using namespace std;int pd(char a,char b){if(a=='('&&b==')')return 0;if(a=='['&&b==']')return 0;return 1;}int tj(char m){if(m=='['||m=='(')return 1;return 0;}int main(){char s[200];int n;scanf("%d",&n);getchar();while(n--){stack<char> a;gets(s);if(s[0]=='\n'){printf("Yes\n");continue;}for(int i=0;s[i];i++){if(a.empty())a.push(s[i]);else if(pd(a.top(),s[i])){if(tj(s[i]))a.push(s[i]);}elsea.pop();}if(a.empty())printf("Yes\n");elseprintf("No\n");}return 0;}

原创粉丝点击