首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

卡特兰数算法解决思路

2012-11-15 
卡特兰数算法1.卡特兰数是一种数列,以比利时的数学家欧仁查理卡塔兰命名。2.卡特兰数列:1, 1, 2, 5, 14, 42

卡特兰数算法
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)这个的。
谢谢大家

[解决办法]
仅供参考

C/C++ code
#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]);} 

热点排行