出栈序列之catalan数

曾经以为只要有兴趣支撑自己就不会放弃算法的学习,不会停止编程,现在才发现,没有目标的鞭策,兴趣也显得那么苍白无力。直到最近要准备考研专业课的复习,才又开始重新接触,才发现即使是之前学过的,也要重新拾起。废话到此为止,来说一下n个元素出栈序列数的推导。

问题:编号为 1 到 n 的 n 个元素,顺序的进入一个栈,则可能的出栈序列有多少种?

其实只要知道catalan数的定义:

就可以很快想到结果就是第n个catalan

因为n 个元素进栈和出栈,总共要经历 n 次进栈和 n 次出栈。这就相当于对这 2n 步操作进行排列。而的进栈次数一定要大于等于出栈的次数,所以只要把进栈看做是+1出栈看做是-1,就是上面的定理了。下面贴出组合数学(Richard.A.Bruadli)关于这个定理的证明:

 

发布了22 篇原创文章 · 获赞 5 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章