当前位置: 首页 > 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






 

相关文章:

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

【题目来源】 https://www.acwing.com/problem/content/3694/ 【题目描述】 求 N 个相同结点能够组成的二叉树的个数。 【输入格式】 一个整数 N。 【输出格式】 输出能组成的二叉树的个数。 【数据范围】 1≤N≤20 【输入样例】 3 【输出样例】 5 【算法分析】 ● 卡特…...

便携式动平衡仪Qt应用层详细设计方案(基于Qt Widgets)

便携式动平衡仪Qt应用层详细设计方案&#xff08;基于Qt Widgets&#xff09; 版本&#xff1a;1.0 日期&#xff1a;2023年10月 一、系统概述 1.1 功能需求 开机流程&#xff1a;长按电源键启动&#xff0c;全屏显示商标动画&#xff08;快闪3~4次&#xff09;。主界面&…...

SpringBoot源码解析(十一):准备应用上下文

SpringBoot源码系列文章 SpringBoot源码解析(一)&#xff1a;SpringApplication构造方法 SpringBoot源码解析(二)&#xff1a;引导上下文DefaultBootstrapContext SpringBoot源码解析(三)&#xff1a;启动开始阶段 SpringBoot源码解析(四)&#xff1a;解析应用参数args Sp…...

CSS 使用white-space属性换行

一、white-space属性的常见值 * 原本格式&#xff1a; 1、white-space:normal 默认值&#xff0c;空格和换行符会被忽略过滤掉&#xff1b;宽度不够时文本会自动换行 * 宽度足够时&#xff0c;normal 处理后的格式 * 宽度不够时&#xff0c; normal 处理后的格式 2、white-spa…...

论文笔记(七十二)Reward Centering(四)

Reward Centering&#xff08;四&#xff09; 文章概括摘要附录A 伪代码 文章概括 引用&#xff1a; article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan, Yi and Tomar, Manan and Sutton, Richard S},journal{arXiv preprint arXiv:2405.09999…...

Matlab——图像保存导出成好看的.pdf格式文件

点击图像的右上角&#xff0c;点击第一个保存按钮键。...

官方文档学习TArray容器

一.TArray中的元素相等 1.重载一下 元素中的 运算符&#xff0c;有时需要重载排序。接下来&#xff0c;我们将id 作为判断结构体的标识。 定义结构体 USTRUCT() struct FXGEqualStructInfo {GENERATED_USTRUCT_BODY() public:FXGEqualStructInfo(){};FXGEqualStructInfo(in…...

unxi-进程间通信

1.进程间通信实现方式 【1】同一主机 linux下通信方式: a.传统的进程间通信方式 管道 --- 进行数据传输的"管道" 无名管道 有名管道 信号 --- b.system v 进程间通信 (posix 进程间通信) 共享内存 (进程间…...

微型分组加密算法TEA、XTEA、XXTEA

微型分组加密算法TEA、XTEA、XXTEA TEA&#xff08;Tiny Encryption Algorithm&#xff09;算法是一种分组加密算法&#xff0c;由剑桥大学计算机实验室的‌David Wheeler和‌Roger Needham于1994年发明。TEA、XTEA、XXTEA算法采用64位的明文分组和128位的密钥。它使用Feistel…...

conda 基本命令

1、查询当前所有的环境 conda env list 2、创建虚拟环境 conda create -n 环境名 [pythonpython版本号] 其中[pythonpython版本号]可以不写 conda create -n test python3.12 我们输入conda env list看到我们的环境创建成功了&#xff0c;但是发现他是创建在我们默认的C盘的…...

详解 为什么 tcp 会出现 粘包 拆包 问题

TCP 会出现 粘包 和 拆包 问题&#xff0c;主要是因为 TCP 是 面向字节流 的协议&#xff0c;它不关心应用层发送的数据是否有边界&#xff0c;也不会自动分割或合并数据包。由于 TCP 的流控制和传输机制&#xff0c;数据可能在传输过程中被拆分成多个小的 TCP 包&#xff0c;或…...

Linus的基本命令

以下是一些常见的 Linux 命令&#xff1a; 一、文件和目录操作&#xff1a; - ls&#xff1a;列出目录中的文件和子目录&#xff0c;常用参数有 -a &#xff08;显示所有文件&#xff0c;包括隐藏文件&#xff09;、 -l &#xff08;显示详细信息&#xff09;、 -h &#xff0…...

【Linux】缓冲区和文件系统

个人主页~ 缓冲区和文件系统 一、FILE结构1、fd2、缓冲区&#xff08;一&#xff09;有换行有return全部打印&#xff08;二&#xff09;无换行无return的C接口打印&#xff08;三&#xff09;无换行无return的系统调用接口打印&#xff08;四&#xff09;有换行无return的C接口…...

函数式编程:概念、特性与应用

1. 函数式编程简介 函数式编程&#xff0c;从名称上看就与函数紧密相关。它是一种我们常常使用却可能并未意识到的编程范式&#xff0c;关注代码的结构组织&#xff0c;强调一个纯粹但在实际中有些理想化的不可变世界&#xff0c;涉及数学、方程和副作用等概念&#xff0c;甚至…...

git中的merge和rebase的区别

在 Git 中&#xff0c;git merge 和 git rebase 都是用于整合分支变更的核心命令&#xff0c;但它们的实现方式和结果有本质区别。以下是两者的详细对比&#xff1a; 一、核心区别 特性git mergegit rebase历史记录保留分支拓扑&#xff0c;生成新的合并提交线性化历史&#x…...

【目标检测】目标检测中的数据增强终极指南:从原理到实战,用Python解锁模型性能提升密码(附YOLOv5实战代码)

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...

uniapp在app下使用mqtt协议!!!支持vue3

什么&#xff1f;打包空白&#xff1f;分享一下我的解决方法&#xff01; 第一步 找大师算过了&#xff0c;装4.1版本运气好&#xff01; 所以根目录执行命令… npm install mqtt4.1.0第二步 自己封装一个mqtt文件方便后期开坛做法&#xff01; // utils/mqtt.js import mqt…...

VMware虚拟机17.5.2版本下载与安装(详细图文教程包含安装包)

文章目录 前言一、vmware虚拟机下载二、vmware虚拟机安装教程三、vmware虚拟机许可证 前言 VMware Workstation Pro 17 功能强大&#xff0c;广受青睐。本教程将带你一步步完成它的安装&#xff0c;简单易上手&#xff0c;助你快速搭建使用环境。 一、vmware虚拟机下载 VMwar…...

如何加固织梦CMS安全,防webshell、防篡改、防劫持,提升DedeCMS漏洞防护能力

织梦系统&#xff08;DedeCMS&#xff09;是一款非常知名的CMS系统&#xff0c;因其功能强大、结构科学合理&#xff0c;深受广大用户喜欢。 虽然织梦CMS&#xff08;DedeCMS&#xff09;非常优秀&#xff0c;但是为了保障网站安全&#xff0c;我们还是需要做一些必要的防护措…...

STM32的HAL库开发---ADC采集内部温度传感器

一、STM32内部温度传感器简介 二、温度计算方法 F1系列&#xff1a; 从数据手册中可以找到V25和Avg_Slope F4、F7、H7系列只是标准值不同&#xff0c;自行查阅手册 三、实验简要 1、功能描述 通过ADC1通道16采集芯片内部温度传感器的电压&#xff0c;将电压值换算成温度后&…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...