括號匹配問題

2021-06-28 21:01:33 字數 885 閱讀 1148

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:3 描述

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

輸入第一行輸入乙個數n(0輸出

每組輸入資料的輸出佔一行,如果該字串中所含的括號是配對的,則輸出yes,如果不配對則輸出no

樣例輸入

3

[(])

(])([()])

樣例輸出

no

noyes

基本演算法思想 :

初始化設定乙個空棧 順序讀入括號

如果是右括號, 那麼進行判斷棧頂元素是否可以消除 或者是不合法情況即棧為空的情況

如果是左括號, 那麼進棧演算法結束時棧為空 , 才算是完全匹配

#include#include#includeusing namespace std;

const int max = 10010;

typedef struct

stack;

void initstack(stack &s)

void push(stack &s, char e)

void pop(stack &s)

char gettop(stack &s)

bool isemptystack(stack &s)

int main()

else if(str[i] == ')')

else if(str[i] == ']')

}if(!isemptystack(s)) flag = 0;

if(flag)

else

}return 0;

}

括號匹配問題

假設表示式中包含三種括號 圓括號 方括號和花括號,它們可以相互巢狀,如 等均為正確的格式,而等為不正確的格式。以下為演算法程式 括號匹配問題 include include int main char ch while ch getchar eof count 0 break case if cou...

括號匹配問題

問題描述 假設表示式中允許包含兩種括號 圓括號與方括號,其巢狀的順序隨意。如 或 等為正確的匹配 而 或者 或者 均為錯誤的匹配。現要求編寫程式,判斷輸入的一行括號是否是匹配的,如果是匹配的,輸出yes,否則輸出no。解題思路 檢驗括號是否是匹配的方法可以用 期待的急迫程度 這個概念來描述。例如考慮...

括號匹配問題

1.題目 給定字串,輸出括號是否匹配,例如,yes no abcd e no a b yes。要求必須用遞迴寫,整個實現不可以出現乙個迴圈語句。2.思路 利用棧解題是可以,但也可以遞迴完成 字母p之前的匹配狀況數用count表示 即count表示p之前左括號的個數 f p,count 如果當前字元p...