卡特兰数。把进栈看成是+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]); } } }