Java + 递推公式水过,正解MS是卡特兰数AC
import java.io.*;
import java.math.*;
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner cin = new Scanner (new BufferedInputStream(System.in));
int cases;
BigInteger [] f = new BigInteger[1010];
for(int i = 2;i < 1010;i++)
{
f[i] = BigInteger.valueOf(0);
}
f[0] = BigInteger.valueOf(1);
f[1] = BigInteger.valueOf(1);
for(int j = 2;j < 1010;j++)
{
for(int i = 1;i <= j;i++)
{
BigInteger temp = f[j-i].multiply(f[i-1]);
f[j] = f[j].add(temp);
}
}
while(cin.hasNext())
{
int n = cin.nextInt();
System.out.println(f[n]);
}
}
}
本文介绍了一种使用Java实现卡特兰数计算的方法。通过递推公式预计算出前1010项的卡特兰数,并利用这些数值快速响应输入的任何查询。此算法适用于需要高效计算卡特兰数序列的应用场景。
638

被折叠的 条评论
为什么被折叠?



