洛谷P1739 表示式括號匹配

2021-08-29 23:38:54 字數 1038 閱讀 5889

題目背景

我竟然開始做這種題了我這種題之前竟然沒做!

說真的 , 這道題的資料範圍沒啥用啊!

假設乙個表示式有英文本母(小寫)、運算子(+,—,*,/)和左右小(圓)括號構成,以「@」作為表示式的結束符。請編寫乙個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回「yes」;否則返回「no」。表示式長度小於255,左圓括號少於20個。

輸入格式:

一行:表示式

輸出格式:

一行:「yes」 或「no」

輸入樣例#1:

2*(x+y)/(1-x)@

輸出樣例#1:

yes輸入樣例#2:

(25+x)(a(a+b+b)@

輸出樣例#2:

no表示式長度小於255,左圓括號少於20個

首先,我們要有這個庫

從頭到尾掃一遍,如果遇到』(『就壓入堆頂,如果是』)『就判斷堆頂是不是』(』,如果不是,那就肯定不能匹配吶

這裡有乙個小技巧 : stl的棧如果元素全部彈出了還要詢問棧頂的話會報錯

像這樣:

所以我們就有了十分神奇的這兩句話:

這樣就可以十分有效的避免re了!!

#include

#include

#include

#include

#include

#include

using

namespace std ;

stack<

char

>s ;

char ch ;

intmain()

} cin >> ch ;}if

(s.top()

!='#'

) cout <<

"no\n"

;else

cout <<

"yes\n"

;return0;

}

洛谷P1739 表示式括號匹配

表示式括號匹配 題目描述 表示式有英文本母 小寫 運算子 和左右小 圓 括號構成,以 作為表示式的結束符。請編寫乙個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回 yes 否則返回 no 表示式長度小於255,左圓括號少於20個。分析 用類似棧的方法做,從前往後記錄左括號出現個數,每找到乙個右...

洛谷 P1739 表示式括號匹配

假設乙個表示式有英文本母 小寫 運算子 和左右小 圓 括號構成,以 作為表示式的結束符。請編寫乙個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回 yes 否則返回 no 表示式長度小於 255,左圓括號少於 20個。輸入格式 一行 表示式 輸出格式 一行 yes 或 no 輸入樣例 1 複製2...

洛谷P1739 表示式括號匹配

假設乙個表示式有英文本母 小寫 運算子 和左右小 圓 括號構成,以 作為表示式的結束符。請編寫乙個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回 yes 否則返回 no 表示式長度小於255,左圓括號少於20個。輸入格式 一行 表示式 輸出格式 一行 yes 或 no 輸入樣例 1 2 x y...