1. 程式人生 > >棧的數學性質(Catalan函式)

棧的數學性質(Catalan函式)

當n個編號元素以某種順序進棧,並可在任意時刻出棧,所獲得的編號元素排列的數目N恰好滿足Catalan函式的計算,即N=C(2n,n)/(n+1)。

卡特蘭數又稱卡塔蘭數,是組合數學中一個常出現在各種計數問題中的數列。以比利時的數學家歐仁·查理·卡塔蘭 (1814–1894)的名字來命名。

卡特蘭數的前幾項:1,1,2,5,14,42,132,429,1430,4862…

卡特蘭數原理:

h(0)=1,h(1)=1catalan數滿足遞推式:

h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)

例如:h(2)=h(0)*h(1)+h(1)*h(0)=1*1+1*1=2

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

另類遞推式

h(n)=h(n-1)*(4*n-2)/(n+1);

遞推關係的解為:

h(n)=C(2n,n)/(n+1) (n=0,1,2,...)

遞推關係的另類解為:

h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,...)

卡特蘭數應用之出棧次序:

問題:一個棧的進棧序列為1,2,3,…,n。有多少個不同的出棧序列?

分析:設f(n) = 序列個數為n的出棧序列種數。設最後出棧的元素為k。即在k進棧之前,元素1,2,…,k-1已經出棧,出棧序列數為f(k-1)。在k進棧後,元素k+1,k+2,…,n已經進棧後全部出棧。所以元素k+1,k+2,…,n出棧序列種數為f(n-k)。由於比k小和比k大的值入棧出棧情況是相互獨立的,此處可用乘法原則,f(n-k)*f(k-1)種,求和便是Catalan遞迴式。

解決:f(n) = f(n-k)*f(k-1),其中k=1,2,3,…,n  所以f(n) = h(n)= C(2n,n)/(n+1) = c(2n,n)-c(2n,n+1)(n=0,1,2,3,…,n)


相關推薦

數學性質Catalan函式

當n個編號元素以某種順序進棧,並可在任意時刻出棧,所獲得的編號元素排列的數目N恰好滿足Catalan函式的計算,即N=C(2n,n)/(n+1)。 卡特蘭數又稱卡塔蘭數,是組合數學中一個常出現在各種計數問題中的數列。以比利時的數學家歐仁·查理·卡塔蘭 (1814–18

洛谷P1044 Catalan

tick sticky catalan 可能 out pre 需要 題目 span P1044 棧 題目背景 棧是計算機中經典的數據結構,簡單的說,棧就是限制在一端進行插入刪除操作的線性表。 棧有兩種最重要的操作,即pop(從棧頂彈出一

| 卡特蘭數Catalan number

文章目錄 1.棧與卡特蘭數的關係 2.卡特蘭數 3.擴充套件 4.相關題目 1.棧與卡特蘭數的關係 棧是計算機中經典的資料結構,我們也會遇到一個常見的問題:一共有多少種合法的出棧順序? 先說一下什麼是合法的出棧序列, 凡是

RT-Thread 讀後感2——建立執行緒定義執行緒的,定義執行緒函式

1. 定義執行緒的棧 多執行緒作業系統中,每個執行緒都是獨立的,互不干擾,所以要為每個執行緒分配獨立的棧空間,這個棧空間通常是一個預先定義好的全域性陣列, 也可以是動態分配的一段記憶體空間,但它們都存在於 RAM 中。定義兩個執行緒棧如下: // 定義執行緒棧 大小設定為

第五屆藍橋杯決賽 第二題 出次序catalan

出棧次序 X星球特別講究秩序,所有道路都是單行線。一個甲殼蟲車隊,共16輛車,按照編號先後發車,夾在其它車流中,緩緩前行。 路邊有個死衚衕,只能容一輛車通過,是臨時的檢查站,如圖【p1.png】所示。 X星球太死板,要求每輛路過的車必須進入檢查站,也可能不檢查就放行,也可

程式設計師數學--卡特蘭數Catalan number

10個高矮不同的人,排成兩排,每排必須是從矮到高排列,而且第二排比對應的第一排的人高,問有多少種排列方式? 我們可以先把這10個人從低到高排列,然後,選擇5個人排在第一排,那麼剩下的5個人肯定是在第二排。用0表示對應的人在第一排,用1表示對應的人在第二排,那麼含有5個0

和卡特蘭數Catalan number

1.棧與卡特蘭數的關係 棧是計算機中經典的資料結構,我們也會遇到一個常見的問題:一共有多少種合法的出棧順序? 先說一下什麼是合法的出棧序列, 凡是合法序列都遵循以下規律:即對於出棧序列中的每一個數字,在它後面的、比它小的所有數字,一定是按遞減順序排列的。 例如

考研---數學全書複合函式的連續性和極限存在性

複合函式的極限存在性,x->x0,g(x)->ux->u,f(x)->A; x->x0,f(g(x))->A需要一個條件:g(x)在x0的去心領域內不等於g(

數制轉換-的應用C++實現

技術分享 ont while namespace 不同 hit enter rac content 本程序實現的是十進制與不同進制之間的的數據轉換,利用的數據結構是棧,基本數學方法輾轉相除法。 conversion.h #include<stack>

洛谷P1722 矩陣 IICatalan

lan 方案 esp 多少 hellip nbsp 如果 tdi blog P1722 矩陣 II 題目背景 usqwedf 改編系列題。 題目描述 如果你在百忙之中抽空看題,請自動跳到第六行。 眾所周知,在中國古代算籌中,紅為正,

洛谷P2532 [AHOI2012]樹屋階梯Catalan

names images res main truct const () sizeof -1 P2532 [AHOI2012]樹屋階梯 題目描述 輸入輸出格式 輸入格式: 一個正整數N(1<=N<=50

洛谷P3200 [HNOI2009]有趣的數列Catalan

整數 取模 排列 right 可能 滿足 奇數 cat using P3200 [HNOI2009]有趣的數列 題目描述 我們稱一個長度為2n的數列是有趣的,當且僅當該數列滿足以下三個條件: (1)它是從1到2n共2n個整數的一個排列{

習題3.9 堆操作合法性20 分浙大版《數據結構第2版》題目集

ram xxxxx text -html base logs main 格式 using 假設以S和X分別表示入棧和出棧操作。如果根據一個僅由S和X構成的序列,對一個空堆棧進行操作,相應操作均可行(如沒有出現刪除時棧空)且最後狀態也是棧空,則稱該序列是合法的堆棧操作

【BZOJ5334】數學計算線段樹

names efi stream lin ++ show print get http 【BZOJ5334】數學計算(線段樹) 題面 BZOJ 洛谷 題解 簡單的線段樹模板題??? 咕咕咕。 #include<iostream> #include<cstd

的運用 Valid Parentheses

valid empty turn bool == sed null ont ets Given a string containing just the characters ‘(‘, ‘)‘, ‘{‘, ‘}‘, ‘[‘ and ‘]‘, determine if the

類和物件的初步認識建構函式

類和物件的初步認識(建構函式) Java是一門面向物件的程式語言(OOP) , 面向物件程式三大的特點:封裝,繼承,多型 1.類: class Person { private int age; public int getAge() {

hdu 5724 Chess SG函式

題目連結:hdu 5724 題意:有一個n行20列的棋盤,棋盤上分佈著一些棋子,A、B兩人輪流下棋,A先手,每次操作可以將某個棋子放到自己右邊的第一個空位(也就是說右邊如果已經有子,可以跳過它,沒有就右移一步),但最多20列,絕對不能超過棋盤,無棋可走的輸。 題解:進行狀態壓縮,bit來

leetcode_的應用括號匹配

20. 有效的括號 給定一個只包括 '(',')','{','}','[',']' 的字串,判斷字串是否有效。 有效字串需滿足: 左括號必須用相同型別的右括號閉合。 左括號必須以正確的順序閉合。 注意空字串可被認為

人工智慧新手入門——高數篇多元函式

多元函式: 多元函式就是有多個因變數的函式,咱們之前接觸的函式基本都是一元的也就是  長成這樣的,接下來咱們要了解的多元函式是長成這樣的  。 概念: 接下來咱們引進一個概念來看一下: 北風

Vue-生命週期鉤子函式

參考:https://cn.vuejs.org/v2/guide/instance.html 每個 Vue 例項在被建立時都要經過一系列的初始化過程——例如,需要設定資料監聽、編譯模板、將例項掛載到 DOM 並在資料變化時更新 DOM 等。同時在這個過程中也會執行一些叫做生命週期鉤子的函式,這給