HDOJ 1023 Train Problem II 卡特兰数
2014-05-12 13:46
411 查看
火车进站出站的问题满足卡特兰数...卡特兰数的相关知识如下:
卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名。
前几项为 (OEIS中的数列A000108): 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, ...
令h(1)=1,h(2)=1,catalan数满足递归式:
例如:h(3)=h(1)*h(2)+h(2)*h(1)=1*1+1*1=2
h(4)=h(1)*h(3)+h(2)*h(2)+h(3)*h(1)=1*2+1*1+2*1=5
若h(0)=1;h(1)=1;h(2)=2;h(3)=5; ····有另类的递归式
另类递归式:
h(n)=h(n-1)*(4*n-2)/(n+1);
该递推关系的解为:
h(n)=C(2n,n)/(n+1) (n=1,2,3,...)
可以看出卡特兰数是一个大数据的问题,处理大数据问题一般是将数据的各位存放在一个数组中....
卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名。
前几项为 (OEIS中的数列A000108): 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, ...
令h(1)=1,h(2)=1,catalan数满足递归式:
例如:h(3)=h(1)*h(2)+h(2)*h(1)=1*1+1*1=2
h(4)=h(1)*h(3)+h(2)*h(2)+h(3)*h(1)=1*2+1*1+2*1=5
若h(0)=1;h(1)=1;h(2)=2;h(3)=5; ····有另类的递归式
另类递归式:
h(n)=h(n-1)*(4*n-2)/(n+1);
该递推关系的解为:
h(n)=C(2n,n)/(n+1) (n=1,2,3,...)
可以看出卡特兰数是一个大数据的问题,处理大数据问题一般是将数据的各位存放在一个数组中....
//h( n ) = ( ( 4*n-2 )/( n+1 )*h( n-1 ) ); #include<stdio.h> //******************************* //打表卡特兰数 //第 n个 卡特兰数存在a 中,a [0]表示长度; //注意数是倒着存的,个位是 a [1] 输出时注意倒过来。 //********************************* int a[105][100]; void ktl() { int i,j,yu,len; a[2][0]=1; a[2][1]=2; a[1][0]=1; a[1][1]=1; len=1; for(i=3;i<101;i++) { yu=0; for(j=1;j<=len;j++) { int t=(a[i-1][j])*(4*i-2)+yu; yu=t/10; a[i][j]=t%10; } while(yu) { a[i][++len]=yu%10; yu/=10; } for(j=len;j>=1;j--) { int t=a[i][j]+yu*10; a[i][j]=t/(i+1); yu = t%(i+1); } while(!a[i][len]) { len--; } a[i][0]=len; } } int main() { ktl(); int n; while(scanf("%d",&n)!=EOF) { for(int i=a [0];i>0;i--) { printf("%d",a [i]); } puts(""); } return 0; }
相关文章推荐
- hdoj1023 Train Problem II(卡特兰数,对大数据的处理)
- hdoj 1023 Train Problem II 【卡特兰数】
- hdoj-1023-Train Problem II【卡特兰数】
- Train Problem II hdu 1023 卡特兰数 (模板)
- hdu 1023 ——Train Problem II(卡特兰数+高精度+java)
- HDU 1023 Train Problem II(卡特兰数)
- HDU 1023 Train Problem II 卡特兰数 大数的乘法除法
- HDU 1023 Train Problem II(卡特兰数)
- HDU 1023 Train Problem II(卡特兰数)
- HDU 1023 Train Problem II (打表求解卡特兰数)
- [HDOJ1023]Train Problem II
- HDOJ 1023 Train Problem II
- HDU 1023 Train Problem II (卡特兰数)
- hdu1023 Train Problem II 卡特兰数,JAVA大数类
- 【HDU-1023】 Train Problem II 【卡特兰数+高精度】
- hdu/hdoj 1023 Train Problem II
- HDU1023 Train Problem II【卡特兰数+大数+亿进制+打表】
- hdu 1023 Train Problem II_出栈方法数_卡特兰数
- HDU_1023_Train Problem II_卡特兰数
- hdoj1023 Train Problem II