卡特兰数是一个很常见的数列,以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名,其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ...(摘自百度百科)

 

卡特兰数的求解方法

1.最基本的n^2递推

 例题:https://www.luogu.org/problemnew/show/P1044

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int n;
 5 int f[20];
 6 int main()
 7 {
 8     scanf("%d",&n);
 9     f[0]=1;
10     f[1]=1,f[2]=2;
11     for(int i=3;i<=n;++i)
12         for(int j=0;j<i;++j)
13         f[i]+=f[j]*f[i-j-1];
14     cout<<f[n]<<endl;
15     return 0;
16 } 
View Code

相关文章: