hdu 1130 How Many Trees? 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1130
题目大意:给出整数n,求由1~n组成的二叉查找树有多少种。
题目分析:卡特兰数(用的递归&&大数)。
code:
import java.math.*;
import java.util.Scanner;
public class Main {
static BigInteger two=new BigInteger("2");
static BigInteger four=new BigInteger("4");
static BigInteger one=BigInteger.ONE;
public static BigInteger h(BigInteger n){
if(n.compareTo(two)<0)return one;
return n.multiply(four).subtract(two).multiply(h(n.subtract(one))).divide(n.add(one));
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
BigInteger n=null;
while(in.hasNextInt()){
n=in.nextBigInteger();
System.out.println(h(n));
}
}
}
PS:虽然是抄的,但还是学了java大数……