問題舉例:元素1,2,3,4,5,6,7入棧,有多少種出棧的可能性?
要點:卡特蘭數,折線法
這個問題分三種型別問,都是一樣的處理方法
解法:
整個過程認為是從座標(0,0)走到(2n,0),入棧記為向右上方移動單位長度,出棧記為向右下方移動單位長度。棧內必須要有元素,不能為負值,所以,曲線不能在x軸下方,這樣才是合法的。
那麼我們要求的就是:合法步驟 = 全部步驟 - 非法步驟
那麼全部步驟必須滿足入棧次數等於出棧次數,即曲線能回到x軸上,到達(2n,0)。
如果不限制合法性,即可以跨越x軸,折線種數為c(2n,n)。
那麼非法步驟就是跨越了x軸,最終還是到達了(2n,0)。那麼我們可以發現,就算你跨過了x軸,如果將k點的折線之後根據y=-1做對稱,那麼折線必然終點是在(2n,-2)處,那麼非法步驟就是到達(2n,-2)的數量。那麼它需要滿足的條件是出棧次數比入棧次數多2次,即入棧為n-1,那麼出棧為n+1,折線種數為c(2n,n-1)。
好了,所有步驟有了,非法步驟有了
合法步驟為c(2n,n)-c(2n,n-1) =c(2n,n)/(n+1)
當n=7時,次數為429次。
順帶補充一下基本知識
排列
排列,一般地,從n個不同元素中取出m(m≤n)個元素,按照一定的順序排成一列,叫做從n個元素中取出m個元素的乙個排列(arrangement)。特別地,當m=n時,這個排列被稱作全排列(permutation)。 公式
組合
從m個不同元素中,任取n(n≤m)個元素並成一組,叫做從m個不同元素中取出n個元素的乙個組合;從m個不同元素中取出n(n≤m)個元素的所有組合的個數,叫做從m個不同元素中取出n個元素的組合數。 公式
推薦乙個**:
證明 卡特蘭數(折線法)
卡特蘭數能夠解決的問題類似出棧順序問題,對於乙個有兩種操作1,2 且1,2操作分別有n次的序列必須嚴格保證操作1的次數在任意前k k z 個操作中始終不小於操作2的次數,這種操作的方案數就是卡特蘭數c 2n,n n 1 我們可以用折線的方式去證明卡特蘭數 在笛卡爾座標系中,令x軸表示當前第幾次操作,...
折線法 卡特蘭數證明
1.飯後,姐姐洗碗,妹妹把姐姐洗過的碗乙個乙個地放進碗櫥摞成一摞。一共有n個不同的碗,洗前也是摞成一摞的,也許因為小妹貪玩而使碗拿進碗櫥不及時,姐姐則把洗過的碗摞在旁邊,問 小妹摞起的碗有多少種可能的方式?2.給定n個數,有多少種出棧序列?3.乙個有n個1和n個 1組成的字串,且前k個數的和均不小於...
卡特蘭數,高精度卡特蘭數
簡單介紹 卡特蘭數是組合數學中常常出現的乙個數列。個人認為不管是遞推公式還是代表的含義都比斐波那契數列難理解一些。遞推公式 應用 1.cn表示長度2n的dyck word的個數。dyck word是乙個有n個x和n個y組成的字串。且全部的字首字串皆滿足x的個數大於等於y的個數。下面為長度為6的dyc...