您的位置:首页 > 其它

How Many Trees?

2012-06-21 17:21 274 查看
import java.util.*;
import java.math.*;
public class Main
{
public static void main(String []args)
{
Scanner cin=new Scanner(System.in);
int i,n;
while(cin.hasNext())
{
n=cin.nextInt();
BigInteger s1 = BigInteger.valueOf(1);
BigInteger s2 = BigInteger.valueOf(1);
for(i=1;i<=n;i++)
{
s1=s1.multiply(BigInteger.valueOf(2*n-i+1));
s2=s2.multiply(BigInteger.valueOf(i));
}
s1=s1.divide(BigInteger.valueOf(n+1));
System.out.println(s1.divide(s2));
}
}
}


这个题目意思是指给出一个数n,输出n 个数构成的不同形状的二叉树,表示使用公式,利用卡特兰数的推导公式,

则有:S1=C(2*n,n)/(n+1).

表示数据过于庞大,所以选择了用Java的大数类来计算~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: