平衡括號問題

2022-08-01 09:03:09 字數 928 閱讀 6943

題意:多組案例,輸入由'('、')'、'['和']'組成的括號序列,判斷是否合法(構成平衡)。合法條件如下:

1)空字串合法。

2)如果a和b都合法,則ab合法。

3)如果a合法則(a)和[a]都合法。

案例:sample input 

3

()(([()])))

([()()])()

sample output 

yes

noyes

分析:

括號的三種非平衡狀態:1. [(]);   2. ([());   3.(()]);

設計思想:單個括號為非平衡狀態,非單括號進行以下步驟:'0』入棧,1)凡出現左括號,則進棧;2)凡出現右括號,首先檢查桟頂元素是否匹配,若匹配則棧頂元素出桟,否則'1'入棧,結束判斷;3)表示式檢驗結束時,若桟頂元素為'0',則匹配正確即括號平衡,否則匹配失敗即括號不平衡。

源**:

1 #include2 #include3 #include//

桟的標頭檔案宣告

4using

namespace

std;

5const

int maxn=130;6

char

str[maxn];

7 stack s;//

建立乙個桟s

8int

main()934

}35else

if(str[i]=='

]')//

右括號形式2

3644}45

}46 puts(s.top()=='

0'?"

yes":"

no");//

判定平衡47}

48}49return0;

50 }

平衡的括號問題

平衡的括號 要運用棧的一些知識,stl。棧的特點是 先進後出 標頭檔案是,宣告方式 stacks 主要操作 push 把元素壓入 棧頂 又稱入棧 pop 從棧頂把元素彈出,出棧 top 取棧頂元素 但不刪除 size 測棧長 個數 empty 判斷棧是否為空 題目大意 輸入乙個包含 和 的括號序列,...

Parenthesis(括號平衡串,匹配問題)

題意 給定乙個長度為n的括號平衡串,q次交換,問交換後是不還是平衡串?是輸出yes,不是輸出no。分析 未交換時,就是乙個平衡串,即括號都能夠匹配 那麼 交換的位置 可能有以下幾種情況 1.原來就是一樣的 或者 左邊的是 右邊的是 直接特判 少一種判斷會tle 2.左邊的是 右邊的是 計數判斷 in...

uva 673 平衡的括號

這道題目要求判斷括號是否平衡。由於是判斷就很簡單了,利用stl裡面的stack棧,遇到 或者 就入棧,遇到 或 就比較出棧。注意下可能輸入空字元 include include include include include include define maxn 200 using namespa...