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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

卡特兰数Catalan Number

發布時間:2025/5/22 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 卡特兰数Catalan Number 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Catalan Number滿足下列遞推公式:

N個元素元素進棧,多少種出棧方式

考慮A、B、C、D依次進棧,那么所有的出棧順序是下列4種情況的并集:

1)A第一個出棧??隙ㄊ茿進棧后馬上出棧,剩下B、C、D的出棧順序有h(3)種。h(0)*h(3)。

2)A第二個出棧。在A之前出棧的肯定是B,B的出棧順序有h(1)種,剩下C、D的出棧順序有h(2)種。h(1)*h(2)。

3)A第三個出棧。在A之前出棧的肯定是B、C,B、C的出棧順序有h(2)種,剩下D的出棧順序有h(1)種。h(2)*h(1)。

4)A第四個出棧。在A之前出棧的肯定是B、C、D,B、C、D的出棧順序有h(3)種。h(3)*h(0)。

h(4)=h(0)*h(3)+h(1)*h(2)+h(2)*h(1)+h(3)*h(0)

買票找零問題

有2n個人排成一行進入劇場。入場費5元。其中只有n個人有一張5元鈔票,另外n人只有10元鈔票,劇院無其它鈔票,問有多少中方法使得只要有10元的人買票,售票處就有5元的鈔票找零?

來一位持5元的顧客記為+1(使劇院多了一張5元的零錢),來一位持10元的顧客記為-1(使劇院少了一張5元的零錢)。那么購票順序可表示一個包含n個1和n個-1的序列,要求符合條件:

對于任意的K(),都有序列的前K項和不小于0。

下面我們要證明所有不符合條件的序列跟一個包含n-1個1和n+1個-1的序列是一一對應的。

1)一個不符合條件的序列對應唯一一個包含n-1個1和n+1個-1的序列。如果一個序列不符合條件,則必然在某個奇數位K上使得前K個數中-1的個數比+1的個數多1,也就是說第K位以后(不包含K)1的個數比-1的個數多1。現在我們把第K位以后(不包含K)的1改為-1,-1改為1,則整個序列中包含n-1個1和n+1個-1。

2)一個包含n-1個1和n+1個-1的序列對應唯一一個不符合條件的序列。一個包含n-1個1和n+1個-1的序列必然在某個奇數位K上使得前K個數中-1的個數比+1的個數多1,也就是說第K位以后(不包含K)1的個數比-1的個數多1?,F在我們把第K位以后(不包含K)的1改為-1,-1改為1,剛好就對應一個個不符合條件的序列。

長度為2n的序列中出現n個1和n個-1的可能情況有種,長度為2n的序列中出現n-1個1和個n+1-1的可能情況有種,所以滿足條件的情況的種。

實際上可以把“找零問題”轉換為“N個元素入棧,有多少種出棧順序”的問題:來一個持5元的顧客對應入棧,來一個持10元的顧客對應出棧。

如何編程計算

使用公式(2)來計算卡待蘭數列需要用遞歸的方法,而遞歸是一種計算量很大的方法,很多時候會出現重復的計算。公式(1)也可以很直接地翻譯為一種遞歸的算法,不過也可以很容易地使用動態規劃把它轉換為非遞歸的方法----先算h(0),再算h(1),再算h(2)……復雜度為O(N)。

如果使用公式(3)就需要掌握排列組合的計算方法。

復雜度也是O(N)。

總結

以上是生活随笔為你收集整理的卡特兰数Catalan Number的全部內容,希望文章能夠幫你解決所遇到的問題。

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