Catanlan数维基百科:http://zh.wikipedia.org/zh/%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0
hdu1023 题意:一堆火车以严格的顺序到一个站里,问出来的时候有多少种顺序。
C[0] = 1
C[n] = C[n-1]*(4*n-2)/(n+1)
import java.math.*;
import java.io.*;
import java.util.*;
public class Main {
public static void main(String [] args){
Scanner cin = new Scanner(System.in);
BigInteger a[] = new BigInteger[101];
a[0] = BigInteger.ONE;
for(int i=1; i<=100; ++i){
a[i] = a[i-1].multiply(BigInteger.valueOf(4*i-2)).divide(BigInteger.valueOf(i+1));
}
while(cin.hasNext()){
System.out.println(a[cin.nextInt()]);
}
}
}
本文探讨了Catanlan数在解决特定排列问题中的应用,具体为一列火车按照特定顺序到达车站后,计算其出站时可能的排列组合数量。通过递推公式C[n]=C[n-1]*(4*n-2)/(n+1),我们能够高效地计算任意情况下火车的排列方式。
450

被折叠的 条评论
为什么被折叠?



