UVA - 673

xiaoxiao2021-02-28  108

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<cstdio> #include<cstring> #include<stack> using namespace std; int main() { int T; scanf("%d ", &T); while(T--) { char f[150]; stack<char>ch; int len = 0, flag = 1; while((f[len] = getchar()) != '\n') { ++len; } for(int i = 0; i < len; ++i) { if(f[i] == '(' || f[i] == '[') { ch.push(f[i]); } else if(f[i] == ')') { if(ch.empty()) { flag = 0; break; } if(ch.top() == '(') ch.pop(); } else if(f[i] == ']') { if(ch.empty()) { flag = 0; break; } if(ch.top() == '[') ch.pop(); } } if(ch.empty() && flag) cout << "Yes" << endl; else cout << "No" << endl; } }

转载请注明原文地址: https://www.6miu.com/read-47398.html

最新回复(0)