测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A41147. 有多少种二叉树输入n(1<n<13),求n个结点的二叉树有多少种形态输入整数n输出答案样例输入3样例输出5n个结点组成的二叉树形态总数=卡特兰数=C^{_{m}^{n}}/(n+1),其中m=2n。

填空题 困难

题目描述

有多少种二叉树

输入n(1<n<13),求n个结点的二叉树有多少种形态

输入

整数n

输出

答案

样例输入

3

样例输出

5


n个结点组成的二叉树形态总数=卡特兰数=C^{_{m}^{n}}/(n+1),其中m=2n。

参考答案

//卡特兰数 #include <iostream> using namespace std; typedef long long LL; LL Cmn(int n){ LL a=1,b=1; for(int i=2*n;i>n;i--) a*=i; for(int i=n;i>=1;i--) b*=i; return a/b/(n+1); } int main() { int n; cin>>n; cout<<Cmn(n)<<endl; return 0; } //卡特兰数 #include <iostream> using namespace std; typedef long long LL; LL dp[15]; int main() { int n; cin>>n; dp[0]=1; for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ dp[i]+=dp[j-1]*dp[i-j]; } } cout<<dp[n]; return 0; }
上一题 下一题