關於卡特蘭數及典型例題
阿新 • • 發佈:2019-01-24
關於卡特蘭數:
關於乘法原理和加法原理:1.便捷記憶:乘法原理:步步相關 種解決方法,第2種方案有m2種解決方法.....第n種方案有mn種解決方法。則對於完成這件事的總方法數:Total = m1 + m2 + m3 + ...... +mn。
f[0] = 1, f[1] = 1;
for(int i = 2; i <= n; i++)
for(int j = 0; j < i; j++)
f[i] += f[j] * f[i-j-1];
關於乘法原理和加法原理:1.便捷記憶:乘法原理:步步相關
加法原理:類類獨立
2.區別:對於乘法原理,我們假設解決一件事需要n步。再假設完成第1步有m1種方法,完成第2步有m2種方法........完成第n步有mn種方法。則對於完成這件事的總方法數:Total = m1 * m2 * m3 * ..... *mn。
那麼對於加法原理,我們就假設解決一件事有n種解決方案數。假設第一種方案有m1
一些例項:
1.二叉樹記數2.出棧序列3.加括號4.凸多邊形劃分給凸多邊形每個定點標上編號1,2,3,......,n。邊1n一定屬於某個三角形1nk。可以看出1nk的左邊是一個k邊形,右邊是一個n - k + 1邊形;根據乘法原理有方案數為f[k][n - k + 1],然後根據加法原理得出答案。
程式碼的核心部分是一樣的...