嚴蔚敏資料結構習題3 14

2022-03-09 22:27:33 字數 869 閱讀 6596

這個題,我愣是看了好久都沒理解,上網查了一下,仔細一想,小記於此。

題目:若以 1234 作為雙端佇列的輸入序列,試分別求出滿足以下條件的輸出序列:

(1) 能由輸入受限的雙端佇列得到,但不能由輸出受限的雙端佇列得到的輸出序列;答案:4132

(2) 能由輸出受限的雙端佇列得到,但不能由輸入受限的雙端佇列得到的輸出序列;答案:4213

(3) 既不能由輸入受限的雙端佇列得到,也不能由輸出受限的雙端佇列得到的輸出序列。答案:4231

初見此題,感覺沒有思路。看了答案之後,感覺怎麼會只有乙個答案呢?而且為什麼都是4先出佇列的呢?

引用嚴蔚敏自己的解答:

雙端佇列確是好像兩個棧底靠在一起的棧,但這兩個棧底又是互通的。它確是很靈活,因此不可能出現的出隊的序列只可能是四個車廂都已經入隊的情況,因為如果佇列中只有1個或2個或3個都是能排程過來的,但當4個都進去之後就受一定限制了,對於輸入受限的雙端佇列此時佇列中車廂的排列必定是1234,因此儘管兩頭都能出去,也不可能出現是42**這樣的出隊序列,而對於輸出受限的雙端佇列,無論怎麼進去,在佇列中也形不成4132和4231(1和2必須相鄰)這樣的序列。

先說一下,為什麼都是4先出佇列。首先要明白的是4是最後乙個進入的佇列的,任何乙個不是4首先出佇列的情況,對於這兩種受限佇列都是能夠實現的。為什麼呢?比如說出佇列序列為3421,完全可以先進1、2、3,(如果佇列中只有1個或2個或3個都是能排程過來的)。這時候,出3,再進4(佇列中仍是3個元素,還是能夠排程過來的),最後出4、2、1。

所以,個別不能實現的情況是:四個元素都以進佇列,且4首先出佇列。

那麼,再根據嚴蔚敏的分析,可以輕鬆得出答案。

嚴蔚敏資料結構習題3 17

3.17 試寫乙個演算法,識別一次讀入的乙個以 為結束符的字串行是否為形如 序列1 序列2 模式的字串行。其中序列1和序列2中都不含字元 且序列2是序列1的逆序列。例如,a b b a 是屬該模式的字串行,而 1 3 3 1 則不是。include include define stack init...

嚴蔚敏資料結構習題3 31

3.31 假設稱正讀和反讀都相同的字串行為 回文 例如,abba 和 abcba 是回文,abcde 和 ababab 則不是回文。試寫乙個演算法判別讀入的乙個以 為結束符的字串行是否是 回文 這題非常簡單,分別入棧和入隊,然後出棧和出佇列比較,相同即可。這種思路我也是靈光一閃想到的。本以為能沾沾自...

嚴蔚敏 資料結構習題 6 52

乙個二叉樹的繁茂度定義為各層節點數的最大值與樹的高度的乘積。是寫個演算法,求二叉樹的繁茂度。其實就是找出結點數最多的那一層,然後結點數乘以樹的高度 include include include include include include include include using namesp...