首页 > 代码库 > HDU 1023

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]);		}	}}

  

  

HDU 1023