当前位置: 首页 > news >正文

AcWing 3691:有向树形态 ← 卡特兰数 + 复旦大学考研机试题

【题目来源】
https://www.acwing.com/problem/content/3694/

【题目描述】
求 N 个相同结点能够组成的二叉树的个数。

【输入格式】
一个整数 N。

【输出格式】
输出能组成的二叉树的个数。

【数据范围】
1≤N≤20

【输入样例】
3

【输出样例】
5

【算法分析】
● 卡特兰数(Catalan number)是
组合数学中一个常出现在各种计数问题中的数列。若从第 0 项开始,则卡特兰数列 h[n] 为:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, …。

● 常用的卡特兰数列 h[n] 有如下 4 种等价的递推式
h[n]=
h[0]*h[n−1]+h[1]*h[n−2]+...+h[n−1]*h[0], (n≥2, h[0]=h[1]=1)
h[n]=
h[n−1]*(4*n−2)/(n+1), (n≥2)
h[n]=C(2n,n)−C(2n,n−1), (n=0,1,2,...)
h[n]=C(2n,n)/(n+1), (n=0,1,2,...)

● 卡特兰数的第 20 项为 6564120420,大于 2×10^9,所以代码中要声明为
long long 型。

●​​​​​​​ 二叉树是有向树

(1)左子树的结点数为 0,右子树的结点数为 n-1。左子树的结点数为 1,右子树的结点数为 n-2。左子树的结点数为 n-1,右子树的结点数为 0。依此类推,可得“左子树的结点数为 k,右子树的结点数为 n-k-1”。

(2)显然,若设 h[k] 表示 k 个结点组成的二叉树的个数,那么由 n 个结点组成的二叉树的个数为 h[0]*h[n−1]+h[1]*h[n−2]+...+h[n−1]*h[0],且 h[0]=h[1]=1。显然就是上文卡特兰数的第一个通项公式。

【算法代码】

#include <bits/stdc++.h>
using namespace std;const int maxn=25;
long long c[maxn];
int n;int main() {cin>>n;c[0]=1,c[1]=1;for(int i=2; i<=n; i++)for(int j=0; j<=i-1; j++)c[i]+=c[j]*c[i-j-1];cout<<c[n];return 0;
}/*
in:
3out:
5
*/




【参考文献】
https://www.acwing.com/solution/content/104520/
https://blog.csdn.net/hnjzsyjyj/article/details/129148916






 

http://www.lryc.cn/news/542114.html

相关文章:

  • 便携式动平衡仪Qt应用层详细设计方案(基于Qt Widgets)
  • SpringBoot源码解析(十一):准备应用上下文
  • CSS 使用white-space属性换行
  • 论文笔记(七十二)Reward Centering(四)
  • Matlab——图像保存导出成好看的.pdf格式文件
  • 官方文档学习TArray容器
  • unxi-进程间通信
  • 微型分组加密算法TEA、XTEA、XXTEA
  • conda 基本命令
  • 详解 为什么 tcp 会出现 粘包 拆包 问题
  • Linus的基本命令
  • 【Linux】缓冲区和文件系统
  • 函数式编程:概念、特性与应用
  • git中的merge和rebase的区别
  • 【目标检测】目标检测中的数据增强终极指南:从原理到实战,用Python解锁模型性能提升密码(附YOLOv5实战代码)
  • uniapp在app下使用mqtt协议!!!支持vue3
  • VMware虚拟机17.5.2版本下载与安装(详细图文教程包含安装包)
  • 如何加固织梦CMS安全,防webshell、防篡改、防劫持,提升DedeCMS漏洞防护能力
  • STM32的HAL库开发---ADC采集内部温度传感器
  • Linux 命令大全完整版(12)
  • Python - 代码片段分享 - Excel 数据实时写入方法
  • (七)趣学设计模式 之 适配器模式!
  • DeepSeek 细节之 MoE
  • 【Linux-网络】从逻辑寻址到物理传输:解构IP协议与ARP协议的跨层协作
  • 毕业离校管理系统的开发与需求分析
  • 【NLP 24、实践 ⑤ 计算Bert模型中的参数数量】
  • 一、Spring框架系统化学习路径
  • Midscene.js - AI驱动,轻松实现UI自动化
  • (九)Mapbox GL JS 中 Marker 图层的使用详解
  • 2k1000LA 使能 nand.