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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

發布時間:2025/4/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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个数进栈后输出的可能序列数的全部內容,希望文章能夠幫你解決所遇到的問題。

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