题意:
在圆上选择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]);
}
}
}
京公网安备 11010502036488号