日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

栈 - 关于出栈序列,判断合法的出栈序列

發布時間:2025/6/17 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 栈 - 关于出栈序列,判断合法的出栈序列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1 引例
    • 2 做題方法
    • 3 原因
      • 3.1 選項D(4 3 1 2)的模擬

1 引例

(例)設棧的入棧序列是 1 2 3 4,則下列不可能是其出棧序列的是( )。
A. 1 2 4 3
B. 2 1 3 4
C. 1 4 3 2
D. 4 3 1 2
E. 3 2 1 4

一般人看到此類題目,都會拿起草稿紙,將各個選項都模擬一遍選出正確答案
這當然可以得出正確的答案 (D
但當元素個數過多的時候,這個方法不可取,而且,這種人工模擬過程浪費時間且容易出錯,下面將介紹一種簡單的做題方法。

2 做題方法

按順序入棧的序列,任意元素 e ,比 e 先入棧的元素,并且比 e 后出棧的元素,一定是逆序的。

讀起來有點繞口,那么先記下 “ 后出先入逆序 ”

1、以最上面的例題為例,若要寫出所有以 1 2 3 4 為入棧順序的出棧序列
暴力求解:4個元素一共有 A44A_4^4A44? 共24種排列(下表加粗斜體的排列為合法排列)

123412431324134214231432
213421432314234124132431
312431423214324134123421
412341324213423143124321

表格中加粗斜體的排列為合法排列一共有 14
現在可以隨意選一個序列來理解一下什么是 “ 后出先入逆序 ”
比如序列:3 1 2 4

  • 選擇任意元素 e ,這里選擇 3
  • 比 3 后出棧的有三個元素 1 2 4
  • 其中比 3 先入棧的有兩個元素 1 2
  • 但是 1 2 是正序的,而不是逆序的
  • 所以這個序列不是合法出棧序列
  • (注:可以利用遞歸設計出相應的算法來判斷所有合法序列)

    2、若只要求出一共有多少個合法出棧序列

    將元素個數替換 n 計算即可,計算得 14
    該公式稱為卡塔蘭數(Catalan number)公式,了解更多 點這里

    注:上式中的括號上下兩個數(2n和n)代表數學中排列組合公式中的C上下兩個數,即用組合公式來求即可。

    3 原因

    3.1 選項D(4 3 1 2)的模擬

    1、將 1 2 3 4 順序依次入棧:

    2、彈出棧頂元素 4:

    3、彈出棧頂元素 3:

    接下來棧內只剩下元素 1 和 2 ,并且 2 在棧頂
    所以說 D (4 3 1 2) 選項的出棧順序最后的 1 和 2 是無法完成的

    可以發現:
    如果把最后兩個元素的順序逆置一下,就可以完成了

    總結

    以上是生活随笔為你收集整理的栈 - 关于出栈序列,判断合法的出栈序列的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。