資訊學奧賽一本通1354 括弧匹配檢驗(棧)

2021-10-17 19:22:11 字數 1528 閱讀 6130

時間限制: 1000 ms         記憶體限制: 65536 kb

提交數: 18844     通過數: 6119設表示式中允許包含兩種括號:圓括號和方括號,其巢狀的順序隨意,如([ ]())[([ ][ ])]等為正確的匹配,[( ])([ ]( )( ( ) ) )均為錯誤的匹配。

現在的問題是,要求檢驗乙個給定表示式中的括弧是否正確匹配?

輸入乙個只包含圓括號和方括號的字串,判斷字串中的括號是否匹配,匹配就輸出 「ok」 ,不匹配就輸出「wrong」。輸入乙個字串:[([][])],輸出:ok

輸入僅一行字元(字元個數小於255255)。

匹配就輸出 「ok」 ,不匹配就輸出「wrong」。

[(])
wrong
提交 

統計資訊 

提交記錄

教學備忘錄:編輯無無

與一本通1353題類似,遇到 ( 或 [ 將其入棧,

遇到 ) 判斷棧頂元素是否為 ( ,若是則彈出棧頂元素,若不是則括號不匹配,

遇到 ] 判斷棧頂元素是否為 [ ,若是則彈出棧頂元素,若不是則括號不匹配

#include #include #include #include using namespace std;

stack s;

int main()

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

c = s.top();

if (c == '(')

else

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

c = s.top();

if (c == '[')

else

} }if (s.empty() && cnt != 0)

else

return 0;

}

用字元組模擬棧

#include #include #include #include using namespace std;

int main()

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

c = s[tmp-1];

if (c == '(')

else

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

c = s[tmp-1];

if (c == '[')

else

} }if (tmp == 0 && cnt != 0)

else

return 0;

}

括弧匹配檢驗(資訊學奧賽一本通 T1354)

題目描述 假設表示式中允許包含兩種括號 圓括號和方括號,其巢狀的順序隨意,如 或 等為正確的匹配,或 或 均為錯誤的匹配。現在的問題是,要求檢驗乙個給定表示式中的括弧是否正確匹配?輸入乙個只包含圓括號和方括號的字串,判斷字串中的括號是否匹配,匹配就輸出ok,不匹配就輸出wrong。輸入乙個字串 輸出...

《資訊學奧賽》1354 括弧匹配檢驗

假設表示式中允許包含兩種括號 圓括號和方括號,其巢狀的順序隨意,如 或 等為正確的匹配,或 或 均為錯誤的匹配。現在的問題是,要求檢驗乙個給定表示式中的括弧是否正確匹配?輸入乙個只包含圓括號和方括號的字串,判斷字串中的括號是否匹配,匹配就輸出 ok 不匹配就輸出 wrong 輸入乙個字串 輸出 ok...

資訊學奧賽一本通 小球(drop)

許多的小球乙個乙個的從一棵滿二叉樹上掉下來組成fbt full binary tree,滿二叉樹 每一時間,乙個正在下降的球第乙個訪問的是非葉子節點。然後繼續下降時,或者走右子樹,或者走左子樹,直到訪問到葉子節點。決定球運動方向的是每個節點的布林值。最初,所有的節點都是false,當訪問到乙個節點時...