zoukankan      html  css  js  c++  java
  • hdu 1130 How Many Trees? 【卡特兰数】

    题目

    题意:给你一个数字n,问你将1~n这n个数字,可以组成多少棵不同的二叉搜索树。

    1,2,5,14……根据输出中的规律可以看出这是一个卡特兰数的序列。于是代用卡特兰数中的一个递推式:

    因为输入可取到100,用无符号位计算最高可计算33个卡特兰数,所以可以用java中的大数

    import java.math.BigInteger;
    import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
            BigInteger[] ans = new BigInteger[105];
            ans[0] = BigInteger.valueOf(1);
            for (int i = 1; i <= 100; ++i) {
                ans[i] = ans[i - 1].multiply(BigInteger.valueOf(4 * i - 2)).divide(BigInteger.valueOf(i + 1));
            }
            Scanner in = new Scanner(System.in);
            while (in.hasNext()) {
                int n = in.nextInt();
                System.out.println(ans[n]);
            }
            in.close();
        }
    }
  • 相关阅读:
    钟国晨160809323(作业5)
    12
    11
    第九次
    8作业
    第七次作业
    6
    林昊5
    计算机网络原理与应用笔记 3/29
    计算机网络原理与应用笔记 3/22
  • 原文地址:https://www.cnblogs.com/qie-wei/p/10160157.html
Copyright © 2011-2022 走看看