卡特兰数(Catalan)

来源:互联网 发布:node.js docker 编辑:程序博客网 时间:2024/04/26 04:52

说16个人按顺序去买烧饼,其中8个人每人身上只有一张5块钱,另外8个人每人身上只有一张10块钱。 
烧饼5块一个,开始时烧饼店老板身上没有钱。 
16个顾客互相不通气,每人只买一个。 
问这16个人共有多少种排列方法能避免找不开钱的情况出现。 

 

  public static void main(String[] args) {
        Scanner in = new Scanner(new BufferedInputStream(System.in));
        BigInteger[] h = new BigInteger[200];
        h[1] = new BigInteger("1");
        h[2] = new BigInteger("2");
        for (int i=3;i<=103;i++)
        {
            int t1 = 4*i-2;
            int t2 = i+1;
            h[i] = h[i-1].multiply(new BigInteger(""+t1)).divide(new BigInteger(""+t2));
        }
        while (true)
        {
            int n = in.nextInt();
            if (n==-1) break;
            System.out.println(h[n]);
        }
    }

 

 

原创粉丝点击