日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

文章目錄

    • 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 是無法完成的

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

    總結

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

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