2058 括弧序列__CODE[VS]

來源:互聯網
上載者:User
題目描述 Description

定義滿足以下規則字串為規則序列,否則不是規則序列:

1.空序列是規則序列;

2.如果S是規則序列,那麼(S),[S],{S}和<S>也是規則序列;

3.如果A和B都是規則序列,那麼AB也是規則序列。

 

例如,下面的字串都是規則序列:

(),[],(()),([]),()[],()[()],{{}}<>,([]<>{{}}),<<{}>>

 

而以下幾個則不是:

(,[,],)(,()),([(),<<,{(}),<{}>)

 

現在,給你一些由"("、")"、"["、"]"、"{"、"}"、"<"、">"構成的字串,請判斷該字串是否為規則序列。

  輸入描述 Input Description

第一行:一個正整數N,表示測試資料群組數;

接下來N行:每行一個括弧序列(長度不超過L)。 輸出描述 Output Description

共N行:對於每一個括弧序列,判斷其是否規則。

規則輸出TRUE,否則輸出FALSE。 範例輸入 Sample Input

2

{()}<<>>

{{{{{}}}} 範例輸出 Sample Output

TRUE

FALSE 資料範圍及提示 Data Size & Hint

對於40%資料,有N=1,0<L<=20;
對於80%資料,有0<N<=5,0<L<=10^3;
對於100%資料,有0<N<=10,0<L<=2*10^6。 括弧配對問題,用棧來寫肯定很簡單了,(第一次用棧來做題目) 先說一下c++中 的函數 使用標準庫的棧和隊列時,先包含相關的標頭檔


#include<stack>#include<queue>定義棧如下:stack stk;定義隊列如下:queue q;




棧提供了如下的操作棧
s.empty()               如果棧為空白返回true,否則返回falses.size()                返回棧中元素的個數s.pop()                 刪除棧頂元素但不返回其值s.top()                 返回棧頂的元素,但不刪除該元素s.push()                在棧頂壓入新元素

隊列提供了下面的操作
q.empty()               如果隊列為空白返回true,否則返回falseq.size()                返回隊列中元素的個數q.pop()                 刪除隊列首元素但不返回其值q.front()               返回隊首元素的值,但不刪除該元素q.push()                在隊尾壓入新元素q.back()                返回隊列尾元素的值,但不刪除該元素


#include <iostream>#include <stack>#include <string.h>#include <cstdio>using namespace std;//stack stk;int main(){int T;long n,i;char c;char map[2000001]={0};scanf("%d", &T);while(T--){scanf("%s", map);n=strlen(map)-1;stack<char>stk;//定義一個棧 for(i=0;i<=n;i++){if(map[i]=='('||map[i]=='<'||map[i]=='{'||map[i]=='[')//如果是左括弧,入棧 stk.push(map[i]);if(map[i]==')'||map[i]=='>'||map[i]=='}'||map[i]==']')//如果是右括弧,取出棧頂元素比較 {if(stk.empty()){printf("FALSE\n");break;}c=stk.top();//取出棧頂元素 if(map[i]==')'&&c!='('){printf("FALSE\n");break;}if(map[i]=='>'&&c!='<'){printf("FALSE\n");break;}if(map[i]==']'&&c!='['){printf("FALSE\n");break;}if(map[i]=='}'&&c!='{'){printf("FALSE\n");break;}stk.pop();//彈出棧頂元素 }}if(i==n+1&&stk.empty())printf("TRUE\n");if(i==n+1&&!stk.empty())printf("FALSE\n");}}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.