NYOJ 2題------括號配對問題

括號配對問題

時間限制:3000 ms  |  內存限制:65535 KB

難度:3

描述

現在,有一行括號序列,請你檢查這行括號是否配對。

輸入

第一行輸入一個數N(0<N<=100),表示有N組測試數據。後面的N行輸入多組輸入數據,每組輸入數據都是一個字符串S(S的長度小於10000,且S不是空串),測試數據組數少於5組。數據保證S中只含有"[", "]", "(", ")" 四種字符

輸出

每組輸入數據的輸出佔一行,如果該字符串中所含的括號是配對的,則輸出Yes,如果不配對則輸出No

樣例輸入

3
[(])
(])
([[]()])

樣例輸出

No
No
Yes

來源

網絡

上傳者

naonao

題目鏈接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=2

分析在代碼中註解

代碼:

#include <iostream>
#include <stack>        //棧的頭文件
#include<cstring>       //用到strlen要加這個頭文件
using namespace std;
int main()
{
    int n,i,t,j;
    char a[10010];
    cin>>n;
    stack <char> s;     //定義棧堆s,其元素類型是字符型
    for(j=0;j<n;j++)
    {
        cin>>a;     
        t=strlen(a);
        bool flag=true;     //定義一個布爾型變量flag並初始化爲真(true)
        while(s.empty()!=true)      //清空棧,一直出棧直至棧空
        {
            s.pop();
        }
        i=0;
        while (i<t)
        {
            if(a[i]=='['||a[i]=='(')        //遇見'['和'('時,使其進棧
                s.push(a[i]);
            if(a[i]==']')               
            {
                if(!s.empty()&&s.top()=='[')    //如果a[i]時']'時,判斷棧是否爲空,並且棧頂元素是否爲'['
                {
                        s.pop();           //如果條件成立,則使棧頂元素出棧
                }
                else                       //反之,則flag=false
                    flag=false;

            }
            if(a[i]==')')
            {
                if(!s.empty()&&s.top()=='(')        //原理同上
                {
                        s.pop();
                }
                else
                    flag=false;

            }
            i++;

        }
        if(flag==true&&t%2==0)             //如果flag爲真(true)並且必須輸入的括號長度是偶數,否則必定不匹配(這是防止輸入一個'['或者'('時出現錯誤)
                                                                                                                                        
        {
            cout<<"Yes"<<endl;
        }
        else                              
        {
            cout<<"No"<<endl;
        }
    }



}
        

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章