题意:
在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数?
题解:
卡特兰数题,
卡特兰序列:1,1,2,5,14,42,132,429,1430·············
递推式f(n)=f(n-1)*(4n-2)/ (n+1) ,
大数的模板可以做,java也可以
队友用java写的
代码:
import java.math.BigInteger; import java.util.Scanner; public class Main { static BigInteger [] a=new BigInteger[200]; public static void init(){ a[0]=new BigInteger("1"); a[1]=new BigInteger("1"); a[2]=new BigInteger("2"); for(int i=3;i<=100;i++){ a[i]=new BigInteger("0"); for(int j=i-1;j>=0;j--){ a[i]=a[i].add(a[j].multiply(a[i-j-1])); } } } public static void main(String[] args) { init(); Scanner in=new Scanner(System.in); while (true){ int n; n=in.nextInt(); if(n==-1) break; System.out.println(a[n]); } } }