#卡特兰数的应用
m = int(input())
dp = [0] * (m+1)
#将dp[n]看做n个数出栈 的序列全部可能性
#而这n个数 最后出栈的可能性有n个(1--n)
#动态转移:dp[n] = dp[k-1]*dp[n-k] .....(代表比k小的数,反之n-1-k代表比k大的数,k的取0<=k<=n)
dp[0] = 1
dp[1] = 1
for n in range(2,m+1):
for k in range(1,n+1):
dp[n] += dp[k-1]*dp[n-k]
print(dp[m])
洛谷\P1044 [NOIP2003 普及组] 栈\Python题解
最新推荐文章于 2024-08-06 00:07:38 发布