時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:3 描述
現在,有一行括號序列,請你檢查這行括號是否配對。
輸入第一行輸入乙個數n(0輸出
每組輸入資料的輸出佔一行,如果該字串中所含的括號是配對的,則輸出yes,如果不配對則輸出no
樣例輸入
3[(])
(])([()])
樣例輸出
nonoyes
運用棧,首先把括號以字串的形式儲存在字串中。然後進行掃瞄,若是『(』或『[』,則進棧,若是『)』或『]』,則彈出棧頂元素,棧頂元素與該字元比較,若匹配:則繼續迴圈;若不匹配:則跳出迴圈(暗示該字串中括號不匹配)。
#include#includeusing namespace std;
#define maxsize 10010
typedef char elemtype;
elemtype e;
typedef struct //定義棧
sqstack;
void initstack(sqstack *&s) //初始化棧函式
bool push(sqstack *&s,elemtype e) //進棧函式
bool pop(sqstack *&s,elemtype &e) //出棧函式
bool stackempty(sqstack *s) //判斷棧是否為空函式
int main()
if(stackempty(s)) //若是『)』或『]』,並且此時棧為空,則該字串一定不匹配,用中間變數z標記
pop(s,e); //若棧不為空,則彈出棧頂元素
if((e=='('&&str[i]==')')||(e=='['&&str[i]==']')) //如果匹配,則繼續迴圈
continue;
else //否則的話,跳出迴圈並把z標記成0
}if(z==1&&stackempty(s)) //如果z為1並且該棧為空棧,則該字串匹配
cout<<"yes"<
南陽理工oj 2括號配對問題
題目描述 現在,有一行括號序列,請你檢查這行括號是否配對。輸入描述 第一行輸入乙個數n 0 樣例輸出 nono yes問題解決的乙個關鍵突破口在於每乙個右括號是和它最近的左括號配對的,知道這個原理,我們就有思路了。我們這裡利用棧來解決這個問題,遇到左括號進棧,遇到右括號和棧頂元素進行比較,如果相同則...
南陽oj 括號配對問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 現在,有一行括號序列,請你檢查這行括號是否配對。輸入第一行輸入乙個數n 0輸出 每組輸入資料的輸出佔一行,如果該字串中所含的括號是配對的,則輸出yes,如果不配對則輸出no 樣例輸入 3 樣例輸出 no noyes 網路 上傳者...
南陽理工acm 括號配對問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 現在,有一行括號序列,請你檢查這行括號是否配對。輸入 第一行輸入乙個數n 0輸出 每組輸入資料的輸出佔一行,如果該字串中所含的括號是配對的,則輸出yes,如果不配對則輸出no 樣例輸入 3 樣例輸出 no noyes 這個題目中...