HDU 1023
卡特兰数。把进栈看成是+1,出栈看成是-1,任何时候部分和都有a1+a2+....ak>=0。求这样的数列的个数。这明显是卡特兰数的一个解释嘛。在《组合数学》这本书就有这样的原本的证明。
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner in= new Scanner(System.in);
BigDecimal []Can=new BigDecimal[110];
BigDecimal B,C,D;
Can[1]=new BigDecimal(1);
for(int i=2;i<110;i++){
B=new BigDecimal(4*i-2);
C=new BigDecimal(i+1);
D=Can[i-1].multiply(B);
Can[i]=D.divide(C);
}
while(in.hasNext()){
int n=in.nextInt();
System.out.println(Can[n]);
}
}
}

浙公网安备 33010602011771号