首页 > 其他 > 详细

HDU 1023

时间:2014-10-07 11:29:43      阅读:310      评论:0      收藏:0      [点我收藏+]

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

原文:http://www.cnblogs.com/jie-dcai/p/4009046.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!