zoukankan      html  css  js  c++  java
  • NYOJ-括号配对问题--------待解决,RE

    描述

    现在,有一行括号序列,请你检查这行括号是否配对。

     
    输入
    第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
    输出
    每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
    样例输入
    3
    [(])
    (])
    ([[]()])
    样例输出
    No
    No
    Yes

    这道题明显是用栈来解决问题,在数据结构书上有这个的解释,运用栈的检查括号的匹配问题。
    但是,我这题思路有但是一直RE ,找不到问题所在,现将代码贴出来。
    #include"iostream"
    #include"stack"
    #include"string"
    using namespace std;
    stack<char>s1;
    
    int main(){
        int n;
        cin>>n;
        while(n--){
            string s2;
            int x=0;
            cin>>s2;
            int n=s2.length();
            for(int i=0;i<n;i++){
                if(s2[i]!=')'&&s2[i]!=']'){
                    s1.push(s2[i]);
                    continue;
                }
                if(s2[i]==')'&&s1.top()=='('){
                    s1.pop();
                    continue;
                }
                if(s2[i]==']'&&s1.top()=='['){
                    s1.pop();
                    continue;
                }
                break;
            }
            if(s1.empty()&&s2[0]!=')'&&s2[0]!=']')
                cout<<"Yes"<<endl; 
            else
                cout<<"No"<<endl;
            while(s1.empty()==false)
                s1.pop();
        }
    }


    
    
  • 相关阅读:
    Uva 10779 collector's problem
    poj 2728 最优比率树(最小生成树问题)
    LA 3126 二分图匹配 最小路径覆盖
    poj 1149 最大流构图
    Step By Step(Java XML篇)
    Step By Step(Java 输入输出篇)
    Step By Step(Java 集合篇)
    Step By Step(Java 线程篇)
    Step By Step(Java 反射篇)
    Step By Step(Java 国际化篇)
  • 原文地址:https://www.cnblogs.com/hutonm/p/5402656.html
Copyright © 2011-2022 走看看