題意:多組案例,輸入由'('、')'、'['和']'組成的括號序列,判斷是否合法(構成平衡)。合法條件如下:
1)空字串合法。
2)如果a和b都合法,則ab合法。
3)如果a合法則(a)和[a]都合法。
案例:sample input
3sample 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...