卡特兰数算法
1.卡特兰数是一种数列,以比利时的数学家欧仁·查理·卡塔兰命名。
2.卡特兰数列:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012……
令第n项为h(n),则:
h(0) = 1;
h(1) = 1;
h(n) = h(0)*h(n-1) + h(1)*h(n-2) + …… + h(n-1)*h(0),其中n>=2
卡特兰数的另一种形式:h(n) = C(2n,n)/(n + 1),其中n>=1
现在我想用算法表示h(n) = h(0)*h(n-1) + h(1)*h(n-2) + …… + h(n-1)*h(0);请问我该怎么设计。
不要用h(n) = C(2n,n)/(n + 1)这个的。
谢谢大家
[解决办法]
仅供参考
#include<stdio.h>#define n 5main(){ int a[10]={0,0,0,0,0,0,0,0,0,0}; int i,j; a[0]=1; a[1]=1; for(i=2;i<n;i++) for(j=0;j<n;j++) if(i>j) a[i]+=a[j]*a[i-j-1]; for(i=0;i<n;i++) printf("%d\n",a[i]);}