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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

n个数进栈后输出的可能序列数

發布時間:2025/4/5 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 n个数进栈后输出的可能序列数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本題的描述十分簡單。n個數依次進棧,可隨機出棧。求有幾種可能。

解釋一下原理:建立數組f。f[i]表示i個數的全部可能性。
f[0] = 1, f[1] = 1; //當然只有一個

設 x 為當前出棧序列的最后一個,則x有n種取值

由于x是最后一個出棧的,所以可以將已經出棧的數分成兩部分
比x小的數有x-1個, 所以這些數的全部出棧可能為f[x-1]
比x大的數有n-x個,所以這些數的全部出棧可能為f[n-x]
這兩部分互相影響,所以一個x的取值能夠得到的所有可能性為
f[x-1] * f[n-x]
兩部分不能互相混合,因為要降序排列,前面小的只有降完后才能插入后面大的數
可由乘法原理得到總數為相乘

另外,由于x有n個取值,所以
ans = f[0]*f[n-1] + f[1]*f[n-2] + … + f[n-1]*f[0];
這,就是傳說中的卡特蘭數

作者: inexistent 更新時間: 2017-10-06 17:03 在Ta的博客查看 舉報
轉自洛谷題解

總結

以上是生活随笔為你收集整理的n个数进栈后输出的可能序列数的全部內容,希望文章能夠幫你解決所遇到的問題。

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