码迷,mamicode.com
首页 > 其他好文 > 详细

NYOJ2 括号配对问题

时间:2015-10-27 11:25:27      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

括号配对问题

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
 
描述
现在,有一行括号序列,请你检查这行括号是否配对。
 
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
#include <iostream>
using namespace std;

class Stack
{
private:
    int top;
    char s[10001];

public:
    Stack()
    {
        top = -1;
    }

    bool empty()
    {
        if (top == -1)
            return true;

        else
            return false;
    }

    void push(char c)
    {
        s[++top] = c;
    }

    void pop()
    {
        top--;
    }

    char get_top()
    {
        return s[top];
    }

    int length()
    {
        return top;
    }
};

int main()
{
    int T;
    char s[10001];
    cin >> T;
    int i;
    char c;

    while (T--)
    {
        cin >> s;

        Stack stack;
        for (i = 0;s[i] != \0;i++)
        {
            if (stack.empty() == true)
            {
                stack.push(s[i]);
            }

            else
            {
                c = stack.get_top();

                if (c == [)
                {
                    if (s[i] == ])
                    {
                        stack.pop();
                    }

                    else
                    {
                        stack.push(s[i]);
                    }
                }

                else if (c == ()
                {
                    if (s[i] == ))
                    {
                        stack.pop();
                    }

                    else
                    {
                        stack.push(s[i]);
                    }
                }

                else
                {
                    stack.push(s[i]);
                }
            }
        }

        if (stack.length() == -1)
        {
            cout << "Yes" << endl;
        }

        else
        {
            cout << "No" << endl;
        }
    }
    return 0;
}

 

NYOJ2 括号配对问题

标签:

原文地址:http://www.cnblogs.com/zqxLonely/p/4913359.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!