UVa 673 - Parentheses Balance

来源:互联网 发布:招聘数据 编辑:程序博客网 时间:2024/06/06 16:34

Parentheses Balance 

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

(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 

YesNoYes



Miguel Revilla 
2000-08-14

#include <cstdio>#include <iostream>#include <cstring>#include <stack>using namespace std;       const int MAX = 150;stack<char> s;string buff;int n;bool find(char ch){if(s.empty())return false;  if(ch==')')  {  if(s.top()=='(')     {     s.pop(); return true;                                            }    return false;  }else if(ch==']'){  if(s.top()=='[')     {     s.pop(); return true;                                            }    return false;}      }void solve(){int length = buff.size();bool ans=true;                                        for(int i=0; i < length; i++){if(buff[i]=='('|| buff[i]=='[')s.push(buff[i]);else {if(!find(buff[i])){ans = false;break;}}}if(ans && s.empty())         printf("Yes\n");    else      printf("No\n");}void init(){while(!s.empty())s.pop();}   void read(){cin>>n;cin.get();while(n--){init();getline(cin, buff);solve();}}int main(){//  freopen("in.txt","r",stdin);   read();return 0;}

两点需要注意的地方,一个输入,一个在输出时需要判断栈是否为空,唉,贡献了好几个WA
1 0
原创粉丝点击