hdoj 1023 Train Problem II 【卡特兰数】
2015-08-27 10:21
666 查看
Train Problem II
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6928 Accepted Submission(s): 3750
[align=left]Problem Description[/align]
As we all know the Train Problem I, the boss of the Ignatius Train Station want to know if all the trains come in strict-increasing order, how many orders that all the trains can get out of the railway.
[align=left]Input[/align]
The input contains several test cases. Each test cases consists of a number N(1<=N<=100). The input is terminated by the end of file.
[align=left]Output[/align]
For each test case, you should output how many ways that all the trains can get out of the railway.
[align=left]Sample Input[/align]
1 2 3 10
[align=left]Sample Output[/align]
1 2 5 16796 Hint The result will be very large, so you may not process it by 32-bit integers.
代码:
/* 原理: 令h(0)=1,h(1)=1,catalan数满足递推式[1] : h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2) 例如:h(2)=h(0)*h(1)+h(1)*h(0)=1*1+1*1=2 h(3)=h(0)*h(2)+h(1)*h(1)+h(2)*h(0)=1*2+1*1+2*1=5 另类递推式[2] : h(n)=h(n-1)*(4*n-2)/(n+1); 递推关系的解为: h(n)=C(2n,n)/(n+1) (n=0,1,2,...) 递推关系的另类解为: h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,...) */
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int a[110][110]={0};//二维数组a[输入的n][n的卡特兰数的每一位的值]; int b[110];//记录位数; void catalan()//求卡特兰数; { int i,j,len,carry,temp; a[1][0]=b[1]=1; len=1; for(i=2;i<=100;i++) { for(j=0;j<len;j++)//乘法; { a[i][j]=a[i-1][j]*(4*(i-1)+2); } carry=0; for(j=0;j<len;j++)//处理相乘结果; { temp=a[i][j]+carry; a[i][j]=temp%10; carry=temp/10; } while(carry)//进位处理; { a[i][len++]=carry%10; carry/=10; } carry=0; for(j=len-1;j>=0;j--)//除法; { temp=carry*10+a[i][j]; a[i][j]=temp/(i+1); carry=temp%(i+1); } while(!a[i][len-1])//高位零处理; { len--; } b[i]=len; } } int main() { int n,i; catalan(); while(scanf("%d",&n)!=EOF) { for(i=b -1;i>=0;i--) { printf("%d",a [i]); } printf("\n"); } return 0; }
相关文章推荐
- RAID各级别的特性
- MainActivity 嵌入 Fragment 的每个函数执行的生命周期
- hdoj.1023 Train Problem II【卡特兰数列】 2015/08/27
- 2015.6.17(Tair)
- oc assign / copy / retain / 容器 / 多态
- oc MRC内存管理机制alloc/retain/copy/release/autorelease
- Syntax error, type annotations are available only when source level is at least 1.8
- install ftp client on kail
- Container With Most Water
- LightOJ 1403 - Air Raid【二分匹配】
- Leetcode: Contains Duplicate
- Leetcode: Factorial Trailing Zeroes
- ideaiu的使用
- CCComponentContainer,CCComponent解析
- 安装APK:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
- 异常:org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available
- Codeforces Round #317 [AimFund Thanks-Round] (Div. 1) B. Minimization 贪心 dp
- LeetCode题解:Factorial Trailing Zeroes
- HDU2473 - Junk-Mail Filter 利用虚拟数组实现删除并查集的节点
- 【图论】【最小生成树】[IOI2003]maintain