問題描述:
假設表示式中允許有兩種括號:圓括號和方括號,其巢狀的順序隨意,即(()[ ])或[([ ] [ ])]等為正確格式,[( ])或(((]均為不正確的格式。檢驗括號是否匹配的方法可用「期待的緊迫程度」這個概念來描述。例如:考慮下列的括號序列:
[ ( [ ] [ ] ) ]
1 2 3 4 5 6 7 8
當計算機接受了第1個括號以後,他期待著與其匹配的第8個括號的出現,然而等來的卻是第2個括號,此時第1個括號「[」只能暫時靠邊,而迫切等待與第2個括號相匹配的 第7個括號「)」的出現,類似的,因只等來了第3個括號「[」,此時,其期待的緊迫程度較第2個括號更緊迫,則第2個括號只能靠邊,讓位於第3個括號,顯然第3個括號的期待緊迫程度高於第2個括號,而第2個括號的期待緊迫程度高於第1個括號;在接受了第4個括號之後,第3個括號的期待得到了滿足,消解之後,第2個括號的期待匹配就成了最急迫的任務了,…… ,依次類推。可見這個處理過程正好和棧的特點相吻合。
基本要求:
讀入圓括號和方括號的任意序列,輸出「匹配」或「此串括號匹配不合法」。
測試資料:
輸入([ ]()),結果「匹配」
輸入 [( )],結果「此串括號匹配不合法」
#include
#include
#include
using
namespace std;
/** * 判定括號序列是否合法
* @param str 括號序列
* @return 返回棧是否為空
*/bool
judge
(const string &str)':
if(s.
top()!=
'}return s.
empty()
;}intmain()
資料結構與演算法課程設計
題目 某地區經過對城鎮交通狀況的調查,得到現有城鎮間快速道路的統計資料,並提出 暢通工程 的目標,使整個地區任何兩個城鎮間都可以實現快速交通 但不一定有直接的快速道路相連,只要互相間接通過快 速路可達即可 現得到城鎮道路統計表,表中列出了任意兩城鎮間修建快速路的費用,以及該道路是否已經修通的狀態。現...
資料結構與演算法課程設計 Prim演算法
題目 某地區經過對城鎮交通狀況的調查,得到現有城鎮間快速道路的統計資料,並提出 暢通工程 的目標,使整個地區任何兩個城鎮間都可以實現快速交通 但不一定有直接的快速道路相連,只要互相間接通過快 速路可達即可 現得到城鎮道路統計表,表中列出了任意兩城鎮間修建快速路的費用,以及該道路是否已經修通的狀態。現...
資料結構與演算法課程設計 Prim演算法
題目 某地區經過對城鎮交通狀況的調查,得到現有城鎮間快速道路的統計資料,並提出 暢通工程 的目標,使整個地區任何兩個城鎮間都可以實現快速交通 但不一定有直接的快速道路相連,只要互相間接通過快 速路可達即可 現得到城鎮道路統計表,表中列出了任意兩城鎮間修建快速路的費用,以及該道路是否已經修通的狀態。現...