UVA

来源:互联网 发布:linux git新建仓库 编辑:程序博客网 时间:2024/06/10 22:29

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.

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

Sample Code

#include<cstdio>#include<cstring>#include<stack>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;}