uva 673 Parentheses Balance

来源:互联网 发布:成都历史气象数据查询 编辑:程序博客网 时间:2024/06/06 02:13

 

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 ofn 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
题意:如果有一个'('那么就要有一个)与它匹配,如果有一个'['那么就要有一个']'与它匹配.。如果都满足,输出”YES“,else 输出”NO“.思路;建立一个栈,左括号’[‘,'('都入栈,右括号')',']'都出栈依次进行下去,如果栈为空,则满足条件,输出“YES”,如果不满足条件,则输出”NO“。代码:
#include<cstdio>#include<stack>using namespace std;int main(){    int n;    scanf("%d",&n);        getchar();        while(n--)        {            char a[130];            stack<char> s;            gets(a);            int flag=0;    for(int i=0;a[i]!='\0';i++)        {            if(a[i]=='('||a[i]=='[')                 s.push(a[i]);            else if(a[i]==')')            {                if(!s.empty()&&s.top()=='(')   s.pop();                else                    {flag=1;break;}            }            else if(a[i]==']')            {                if(!s.empty()&&s.top()=='[')                    s.pop();                else {flag=1;break;}            }        }        if(flag||!s.empty())   printf("No\n");        else printf("Yes\n");        }    return 0;}

 

 

0 0
原创粉丝点击