算法学习017 不同的二叉搜索树 c++算法学习 中小学算法思维学习 比赛算法题解 信奥算法解析

news2024/9/22 3:49:21

目录

C++不同的二叉搜索树

一、题目要求

1、编程实现

2、输入输出

二、算法分析

三、程序编写

四、运行结果

五、考点分析

六、推荐资料


C++不同的二叉搜索树

一、题目要求

1、编程实现

给定一个整数n,求以1、2、3、......、n为节点组成的二叉搜索树有多少种

2、输入输出

输入描述:输入一个正整数n

输出描述:只有一行,一个整数,即能够组成的不同的二叉搜索树有多少种

输入样例:

3

输出样例:

5

二、算法分析

  1. 从给定题目的初步分析可以看出,首先小朋友们要了解什么是二叉搜索树
  2. 二叉搜索树:Binary Search Tree,BST,是一种二叉树的特殊形式,其中每个节点的值都大于其左子树的所有节点的值,且小于其右子树的所有节点的值。
  3. 二叉搜索树具有以下性质:左子树中所有节点的值都小于根节点的值。右子树中所有节点的值都大于根节点的值。左子树和右子树都是二叉搜索树。
  4. 从上面分析可以得到,n=1 有一棵,n=2 有两棵,n=3 有五棵
  5. 而从上图中可以看到,当n等于3的时候,对应的结果是由以1为节点的2棵,加上以2为节点的1棵,加上以3为节点的两棵
  6. 而以1为根节点的数量=左子树有0个节点的搜索树数量*右子树有2个节点的搜索树数量
  7. 以2为根节点的数量=左子树有1个节点的搜索树数量*右子树有1个节点的搜索树数量
  8. 以3为根节点的数量=左子树有2个节点的搜索树数量*右子树有0个节点的搜索树数量
  9. 即:dp[3] = dp[0]*dp[2] + dp[1]*dp[1] + dp[2]*dp[0] 
  10. 可以用之前学的动态规划来进行求解
  11. dp[i] 指的就是i个节点对应的不同的二叉搜索树的数量
  12. dp[0]也就是表示0个节点,也就是空二叉树对应的搜索树的数量为1,空二叉树也是一棵二叉树
  13. 对应的状态转移方程就是:dp[i] += dp[j-1] * dp[i-j],也就是1到i个节点之间每个以j为根节点的二叉搜索树数量之和,而每个以j为根节点的二叉搜索树的数量等于左子树有j-1个节点的搜索树数量乘以右子树有i-j个节点的搜索树数量
  14. 对应的遍历顺序就是从1一直到n,从前往后即可

三、程序编写

#include<bits/stdc++.h>
using namespace std;
int dp[20];
int getBst(int 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];
	return dp[n];	
}

int main()
{
	int n;
	cin>>n;
	cout << getBst(n);
	return 0;
}

 本文作者:小兔子编程 作者首页:小兔子编程-CSDN博客

四、运行结果

3
5

5
42

五、考点分析

难度级别:难,这题相对而言难在题目分析,具体主要考查如下:

  1. 分析题目,找到解题思路
  2. 充分掌握变量和数组的定义和使用
  3. 学会动态规划算法的原理和使用
  4. 确定动态数组的定义和含义
  5. 分析出动态规划算法的状态转移方程以及遍历顺序
  6. 学会输入流对象cin的使用,从键盘读入相应的数据
  7. 学会for循环的使用,在确定循环次数的时候推荐使用学会
  8. 掌握输出流对象cout的使用,与流插入运算符 << 结合使用将对象输出到终端显示
  9. 学会分析题目,算法分析,将复杂问题模块化,简单化,从中找到相应的解题思路
  10. 充分掌握变量定义和使用,循环语句和动态规划算法的应用

PS:方式方法有多种,小朋友们只要能够达到题目要求即可!

六、推荐资料

  • 所有考级比赛学习相关资料合集【推荐收藏】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2055559.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络瘫痪幕后黑手:如何应对TCP/IP端口消耗?

TCP/IP 协议是互联网通信的基础&#xff0c;它的稳定性和可靠性使我们使用互联网的十分重要的一点。在网络运行过程中&#xff0c; TCP/IP 的连接问题中&#xff0c; TCP/IP 端口耗尽故障是较为常见的一种。我们要及时有效地排除这些故障来保障网络的正常运行并确保业务顺利开展…

Windows下如何将mmdetection训练好的模型导出为onnx格式?

写在前面 注意:第一部分是踩坑记录,第二部分才是正确的导出步骤!!!! 踩坑方法记录 这一部分的方法看样子好像没啥问题,但是一步步繁琐的操作下来你会发现,你已经入坑了!!! 提醒大家,如果你正在按照这个方法导出模型,劝你尽快放弃,行不通【原因在于后续的pyth…

Linux网络配置的基本原理、常用命令以及实战操作

&#x1f600;前言 本篇博文是关于Linux网络配置的基本原理、常用命令以及实战操作&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您…

elasticsearch pipelineI详解:原理与使用

码到三十五 &#xff1a; 个人主页 在Elasticsearch的数据处理流程中&#xff0c;Pipeline API为数据的预处理和转换提供了强大的工具。随着Elasticsearch 5.x版本之后Ingest Node的引入&#xff0c;Pipeline API的引入为开发者们提供了更多的灵活性和便利性。本文将对Pipeline…

leetcode322. 零钱兑换,完全背包最值问题,附背包问题模板

leetcode322. 零钱兑换 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种…

人机环境系统智能已经超越了传统的空间智能和物理世界的概念

人机环境系统智能已经超越了传统的空间智能和物理世界的概念&#xff0c;进入了更为复杂的层次。在人机环境系统中&#xff0c;智能不仅涉及对物理世界的感知和理解&#xff0c;还包括对人类语言、情感、意图等的理解和生成。人工智能技术的应用&#xff0c;如自然语言处理、机…

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(三)---创建自定义激光雷达Componet组件

前言 本系列教程旨在使用UE5配置一个具备激光雷达深度摄像机的仿真小车&#xff0c;并使用通过跨平台的方式进行ROS2和UE5仿真的通讯&#xff0c;达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础&#xff0c;Nav2相关的学习教程可以参考本人的其他博…

Kubernetes的快速安装

一、kubernetes的基本概念 1.kubernetes Kubernetes 是一个开源的开源的分布式编排技术&#xff0c;Kubernetes 致力于提供跨主机集群的自动部署、扩展、高可用以及运行应用程序容器的平台&#xff0c;其遵循主从式架构设计、组件可以分为工作节点 (Node) 组件&#xff0c;和控…

基础第3关:LangGPT结构化提示词编写实践

提示词&#xff1a; # Role: 伟大的数学家 ## Profile - author: LangGPT - version: 1.0 - language: 中文 - description: 一个伟大的数学家&#xff0c;能够解决任何的数学难题 ## Goals: 根据关键词进行描述&#xff0c;避免与已有描述重复。 ## Background: 你正在被…

2024网安创新大赛,美创科技产品方案双获奖!

2024年网络安全优秀创新成果大赛 “2024年网络安全优秀创新成果大赛”是国家网络安全宣传周重要活动之一。大赛由中央网信办指导、中国网络安全产业联盟&#xff08;CCIA&#xff09;主办。 近日&#xff0c;“2024年网络安全优秀创新成果大赛-杭州分站赛” 正式公布评选结果。…

强!小目标检测全新突破!检测速度快10倍,GPU使用减少73.4%

强&#xff01;小目标检测全新突破&#xff0c;提出Mamba-in-Mamba结构&#xff0c;通过内外两层Mamba模块&#xff0c;同时提取全局和局部特征&#xff0c;实现了检测速度快10倍&#xff0c;GPU使用减少73.4&#xff05;的显著效果&#xff01; 【小目标检测】是近年来在深度…

点灯案例练习(基于寄存器)

目录 一、需求描述 二、工程创建 二、硬件电路设计 三、软件设计 1、main.c 1、开启时钟 2、配置GPIOA的工作模式 3、设置PA1、PA8端口低电平 4、给死循环保持状态 2、最终代码如下 四、实验现象 前面&#xff0c;我们耗费大量时间&#xff0c;终于点亮了STM32板子上的…

WLAN基础知识(1)

WLAN&#xff1a; 无线局域网&#xff0c;无线技术&#xff1a;Wi-Fi、红外、蓝牙等 WLAN设备&#xff1a; 胖AP&#xff1a; 适用于家庭等小型网络&#xff0c;可独立配置&#xff0c;如&#xff1a;家用Wi-Fi路由器 瘦AP&#xff1a; 适用于大中型企业&#xff0c;需要配合AC…

【Kettle】新建转换工程

目录 一、新建一个转换工程1. 创建【转换】工程2. 创建输入对象并编辑步骤3. 创建输出对象并编辑步骤 二、运行转换工程和查看执行结果1. 运行转换工程2. 查看执行结果 一、新建一个转换工程 1. 创建【转换】工程 在 Kettle 欢迎界面中&#xff0c;依次点击【新建】->【转…

其实你就学不会 Python

标题党一下&#xff0c;Python 程序员成千上万&#xff0c;当然有很多人学得会。这里说的“你”&#xff0c;是指职场中的非专业人员。 职场人员一般会用 Excel 处理数据&#xff0c;但也会有很多无助的情况&#xff0c;比如复杂计算、重复计算、自动处理等&#xff0c;再遇上个…

中石油笔试25届秋招考什么?如何通过在线测评|附真题库面试攻略

职小豚 一、中石油公司介绍 嘿&#xff0c;小伙伴们&#xff01;今天咱们来聊聊大名鼎鼎的中石油。 中石油&#xff0c;那可是能源领域的巨无霸&#xff01;它就像一座庞大的能源宝库&#xff0c;为我们的生活和国家的发展源源不断地输送着动力。 中石油在国内外的油气勘探…

如何优雅的薅羊毛之Flux.1免费使用还支持中文prompt

我看硅基流动&#xff0c;现在免费用Flux.1的模型了&#xff0c;就注册了一个账号 但是Flux和之前的sd一样&#xff0c;中文理解力有问题 换哪个模型都不成&#xff0c;直接换英文提示词还行 放DIFY里串一下 我看tool里没有&#xff0c;那就自定义一个 DIFY要求schema要满足op…

SpringCloud天机学堂:分布式任务调度

SpringCloud天机学堂&#xff1a;分布式任务调度 文章目录 SpringCloud天机学堂&#xff1a;分布式任务调度1、分布式任务调度2、分布式任务调度原理3、分布式任务调度技术对比4、XXL-JOB介绍部署调度中心定义任务注册执行器配置任务调度执行一次 1、分布式任务调度 一般的定时…

43.x86游戏实战-XXX寻找吸怪坐标

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

( Neurocomputing,2023)Relphormer:用于知识图谱表示的关系图Transformer

Relphormer:Relational Graph Transformer for Knowledge Graph Representations 资料 论文&#xff1a;Relphormer:Relational Graph Transformer for Knowledge Graph Representations 代码&#xff1a;https://github.com/zjunlp/Relphormer 摘要 Transformer在包括自然…