PHP Catalan數的幾個應用

來源:互聯網
上載者:User
 1 <?php 2     #給定入棧序列,求出棧序列組合總數 3     #這是一個catalan數問題 4     #設共有n個數入棧,將入棧序列和出棧序列寫在一起共有2n個數 5     #將第一個入棧的數作為基點,則第一個數肯定是在第2i+1的位置出棧 6     #否則第一個數入棧編號是0,如果是在2i,則在第一個數入棧和出棧之間共有2i-1個數,是奇數 7     #既然是奇數,則說明有數在第一個數出棧之前入棧卻沒有出棧,矛盾 8     #那麼,我們可以找到地推規律,設f(2n)表示n個數的入棧出棧序列總數 9     #則 f(2n) = f(0)f(2n-2) + f(2)f(2n-4) + ... + f(2n-2)f(0)10     #f(i)f(2n-i-2)表示位於第一個數入棧和出棧之間有i個數,第一個數出棧以後有2n-i+2個數11     #易知f(2) = 1, f(4) = 2 ...12 13     #n代表共有n個元素入棧14     function count_pop($n) {15         #如果只有一個或0個元素,則出棧序列只有一種16         if ($n <= 1) return 1;17         $sum = 0;18         for ($i = 0; $i < $n; $i++) {19             $sum += count_pop($i) * count_pop($n - 1 - $i); 20         }21 22         return $sum;23     }24 25     echo count_pop(4);26 27     #括弧配對問題28     #問n對括弧最多有多少種配對方法29     #例如2對括弧的配對方法有()(),(())共兩種30     #這也是一個catalan數列問題31     #以第一個做括弧為基點a,出現的位置為1,則下一個於這個括弧配對的肯定是2i+1,原理與上同32     #用f(n)表示共有n對括弧,那麼33     #f(n) = f(0)f(n-1) + f(1)f(n-2) + ... + f(n-1)f(0)34     #其中f(i)f(n-1-i)表示第一對左右括弧之間共有i對括弧配對,第一對左右括弧右邊共有n-1-i對括弧配對35     #程式和上面一模一樣36 37     #再來就是劇院買票問題38     #有2n個人排成一行進入劇場。入場費5元。其中只有n個人有一張5元鈔票,另外n人只有10元鈔票39     #劇院無其它鈔票,問有多少中方法使得只要有10元的人買票,售票處就有5元的鈔票找零40     #將持5元買票的人視為左括弧,10元的人視為右括弧,問題解決41 42     #然後是n個節點,可以構成多少種不同形態的二叉樹,43     #   1            2 44     #  / \    和    / \   算是形態相同45     # 2   3        1   346     #   1            2 47     #  / \    和    /     算是形態不同48     # 2   3        1   49     #             /50     #            351 52     #同樣是catalan數問題,設f(n)為n個節點的樹形態53     #則f(n) = f(0)f(n-1) + f(1)f(n-2) + ... + f(n-1)f(0)54     #f(i)f(n-1-i)表示當前樹的左子節點共有i個,右子節點共有n-i-1個55     #問題同上,解決56 ?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.