卡特兰数java

import java.math.BigInteger;

import java.util.Scanner;

public class Main

{

    publicstatic void main(String []args)

    {

        Scanner cin=new Scanner(System.in);

        BigInteger h[]=new BigInteger[1005];

        h[0]=new BigInteger("1");

        h[1]=new BigInteger("1");

        BigInteger one=new BigInteger("1");

        BigInteger four=new BigInteger("4");

        BigInteger two=new BigInteger("2");

        for(int i=2;i<1005;i++)

        {

            String str=String.valueOf(i);

            BigInteger n=new BigInteger(str);

            BigInteger temp=new BigInteger("0");

            h[i]=(n.multiply(four).subtract(two)).multiply(h[i-1]).divide(n.add(one));

            //h[i]=temp.divide(n.add(one));

            //h[i]=h[i-1].multiply(4*n-1).divide(n.add());

        }

        while(cin.hasNext())

        {

            //h(1)=1,h(0)=1catalan数满足递归式: 

            //h(n)=(4*n-2)/(n+1)*h(n-1); 

            int n=cin.nextInt();

            System.out.println(h[n]);

        }

    }

}

你可能感兴趣的:(卡特兰数问题)