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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【模板】卡特兰数

發布時間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【模板】卡特兰数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ACM模板


目錄

    • Catalan數證明
    • 卡特蘭數應用

Catalan數證明

1.卡特蘭數遞推式:
an={1,n=0∑i=0n?1ai×an?1?i,n>0a_n=\begin{cases} 1,n=0\\\sum_{i=0}^{n-1}a_i×a_{n-1-i},n>0\end{cases} an?={1,n=0i=0n?1?ai?×an?1?i?,n>0?
2.卡特蘭數組合數:
an=C2nn?C2nn?1a_n=C_{2n}^n-C_{2n}^{n-1} an?=C2nn??C2nn?1?
證明遞推式

先舉個例子,假如你身上沒有錢,但是你想花錢,你每次可以花一元錢,只要你有錢你可以連續花錢,你父母準備給你n元錢但是每次只給你一元錢,只要還沒給你n元錢就可以一直給,問你有多少種花錢方案?

如下圖,我們令父母給錢代表向右移動一個單位,花錢代表向上一個單位初始在原點(你沒有花錢,你父母也沒有給你錢)最終父母給我們n元錢,我們花掉n元錢。根據實際情況我們可以知道,我們花的錢一定不超過父母給我們的錢。抽象一下現在要求從(0,0)到(n,n)的一條路徑并且路徑上的所有點的縱坐標小于等于橫坐標

求從(0,0)到(n,n)的一條路徑的方案數為C2nnC_{2n}^nC2nn?

如果某條路徑不合法,如上圖黑色路徑,路徑上存在點的縱坐標大于橫坐標,我們找到第一個不符合該條件的點如圖橘黃色的點,該點一定落在y=x+1y=x+1y=x+1這條直線上,我們將此不合法路徑橘色點的后部分關于y=x+1y=x+1y=x+1做對稱,如圖黃色部分該終點一定落在(n?1,n+1)(n-1,n+1)(n?1,n+1)。因此從求從(0,0)到(n,n)的不合法路徑的方案數可以轉化為從(0,0)到(n-1,n+1)的一條路徑的方案數為C2nn?1C_{2n}^{n-1}C2nn?1?

從(0,0)到(n,n)的一條路徑并且路徑上的所有點的縱坐標小于等于橫坐標C2nn?C2nn?1C_{2n}^{n}-C_{2n}^{n-1}C2nn??C2nn?1?

卡特蘭數應用

  • 進棧
  • 括號匹配
  • 畫二叉樹
  • 凸多邊形三角劃分
  • 總結

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

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