卡特兰数可以用递推公式或组合公式求解。对于递推公式,可以使用动态规划或递归算法。对于组合公式,可以使用公式法或生成函数法。

以下是使用动态规划求解第n个卡特兰数的代码:

def catalan(n, mod=10**9):
    dp = [0] * (n+1)
    dp[0] = 1
    for i in range(1, n+1):
        for j in range(i):
            dp[i] += dp[j] * dp[i-j-1]
            dp[i] %= mod
    return dp[n]

n = int(input())
print(catalan(n))

以下是使用公式法求解第n个卡特兰数的代码:

from math import factorial

def catalan(n, mod=10**9):
    num = factorial(2*n) % mod
    den = factorial(n+1) * factorial(n) % mod
    return num * pow(den, mod-2, mod) % mod

n = int(input())
print(catalan(n))

对于较大的n,使用递推公式可能更快。如果需要求多个卡特兰数,可以预处理出前n个卡特兰数,然后直接查表。

卡特兰数求解:递推公式、组合公式及代码示例

原文地址: https://www.cveoy.top/t/topic/njdP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录