N个元素进栈 出栈情况种数

news2024/9/29 17:23:38

文章目录

  • 1.逐一求解
  • 2.卡特兰数的引入
  • 3.得出结论

在这里插入图片描述

1.逐一求解

面对此类问题 我们无法直接分析元素个数 为N的情况 通常我们都会逐一分析

设定一个函数 f(N):N为元素个数 f(N)为出栈顺序种数 

显然:

f(1) = 1:a

f(2) = 2:a,b b,a

f(3) = 5:a,b,c  a,c,b   b,a,c   b,c,a    /*c,a,b*/   c,b,a

f(4) = ?

当N为4时 问题趋于复杂 那么怎么解决呢?
我们从小就开始学数学 小学数学有一章是–找规律
很明显 这种问题就是找规律的
只不过有些规律难找 我们一一研究

接下来我会以新口吻来分析这个问题 各位一看便知
假定f(0) = 1

f(1) = 1:a
a第1个出栈 前面有0个出栈 后面有0个出栈  f(0) * f(0) = 1  f(1) = 1

f(2) = 2:a,b b,a
a第1个出栈 前面有0个出栈 后面有1个出栈  f(0) * f(1) = 1
a第2个出栈 前面有1个出栈 后面有0个出栈  f(1) * f(0) = 1   f(2) = 2

f(3) = 5:a,b,c  a,c,b   b,a,c   b,c,a    /*c,a,b*/   c,b,a
a第1个出栈 前面有0个出栈 后面有2个出栈  f(0) * f(2) = 2
a第2个出栈 前面有1个出栈 后面有1个出栈  f(1) * f(1) = 1
a第3个出栈 前面有2个出栈 后面有0个出栈  f(2) * f(0) = 2  f(3) = 5


f(4) = ?

类似于递归思想 将难解的大问题转换为易于求解的子问题 一一求解
那么f(4)是多少呢? 这时就很容易解决了

A第1个出栈,前面有0个出栈  后面有3个出栈    f(0) * f(3) = 5
A第2个出栈,前面有1个出栈  后面有2个出栈    f(1) * f(2) = 2
A第3个出栈,前面有2个出栈  后面有1个出栈    f(2) * f(1) = 2
A第4个出栈,前面有3个出栈  后面有0个出栈    f(3) * f(0) = 5  f(4) = 14

递推:

f(n) = f(0)f(n-1) + f(1)f(n-2) + .....+ f(n-1)f(0)

2.卡特兰数的引入

那么这个数等于多少呢?实际上 早有先人研究过这一类数学问题 这个数就是著名的卡特兰数
以下内容来源于百度卡特兰数

在这里插入图片描述
在这里插入图片描述

3.得出结论

n个元素进栈,出栈情况种数为

在这里插入图片描述

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

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

相关文章

【血压仪器】开发血压计方案pcba电路板

血压计方案测量准确,语音播报结果,大屏幕,显示更清晰,算法经过大量临床测试,更稳定等特点,另外对于此类方案,由于已经拥有成熟方案,可配合客户需求开发设计,可以在短时间…

opencv-phase 函数

计算梯度强度和方向 梯度的方向与边缘的方向总是垂直的。图像中的边缘可以指向各个方向,通常会取水平(左、右)、垂直(上、下)、对角线(左上、右上、左下、右下)等八个不同的方向计算梯度。 角度…

gds/网表导入virtuoso注意事项

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?拾陆楼知识星球入口 gds和网表导入到virtuoso中都需要添加参考库,这里需要注意的是如果上层模块/顶层调用下层模块时参考库时,需要把library中的模块cell的单独copy到新的库中,模块的via layout或module schematic和sy…

将一个shapefile 由地理坐标系统投影到投影坐标系统

如题: 所需数据: idll.shp,一个以十进制度表示经纬度数值的shapefile,为Idaho 州的轮廓图。 任务要求: 定义idll.shp空间参考为地理坐标系North American Datum 1927,并将idll.shp 投影到Idaho 州横轴墨卡托&#xf…

桶装水一键订水系统,支持通过手机端一键订水票;

桶装水一键订水系统,支持通过手机端一键订水票、模版消息推送送水状态,支持门店送水员一键接单送水,上门核销完成送水过程的专业送水(订水)系统; 桶装水订水送水系统(多门店版) 1、专属门店 在线建立专属门…

MATLAB算法实战应用案例精讲-【图像处理】SLAM技术详解

目录 前言 几个高频面试题目 SLAM和路径规划对比 算法原理 SLAM组成 常用的SLAM传感器 常用的两种地图类型 SLAM算法实现4要素 主流SLAM算法 2D激光SLAM算法 1. Gmapping 2. Hector slam 3. KartoSLAM 4. LagoSLAM 5. CoreSLAM 3D激光SLAM算法对比 测试的SLAM…

SpringBoot项目整合

一、创建项目 IDEA中采用spring initialzer...创建&#xff0c;jdk选择8&#xff0c;maven,jar。。。springboot版本2.5.0&#xff08;稳定&#xff09; 项目依赖&#xff1a; 二、项目结构&#xff1a; 原始pom.xml文件 <?xml version"1.0" encoding"UT…

Java基础篇 数组

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; Java从入门到精通 ✨特色专栏&#xf…

[VC++]圆形进度条

[VC]圆形进度条 源码开发环境&#xff1a;VC6.0 WIN10 64位下编译通过利用绘制饼图的原理&#xff0c;来制作的圆形进度条&#xff0c;可以显示百分比。软件运行截图如下&#xff1a; 附件源码下载(点击下载&#xff09;

低投入,高产出的数字人直播间软件强势“出圈”,铭顺科技带你一探究竟

数字人直播的魅力在于它的独特性&#xff0c;通过先进的数字技术&#xff0c;创作者可以打造自己独一无二的数字形象&#xff0c;让观众与其互动。 与传统的直播相比&#xff0c;数字人直播模式的投入成本相对较低&#xff0c;却能获得高额产出。传统直播需要大量的设备、场地…

ROS2创建工作区

ROS2创建工作区 ros2官方使用colcon工具来进行代码编译&#xff0c;首先需要安装colcon&#xff1a; sudo apt install python3-colcon-common-extensions创建工作区&#xff1a; mkdir -p ~/ros2_ws/src cd ~/ros2_ws进入src文件夹下拉取一部分例子代码&#xff1a; cd ~/…

RK3568笔记二:部署手写数字识别模型

若该文为原创文章&#xff0c;转载请注明原文出处。 环境搭建参考RK3568笔记一&#xff1a;RKNN开发环境搭建-CSDN博客 一、介绍 部署手写数字识别模型&#xff0c;使用手写数字识别&#xff08;mnist&#xff09;数据集训练了一个 LENET 的五层经典网络模型。Lenet是我们的…

Step2:Java内存区域与内存溢出异常

文章目录 1.1 概述1. 2 运行时数据区域1. 3 HotSpot虚拟机对象探秘1. 4 作业:OutOfMemoryError异常体验1.1 概述 对于Java程序员来说,再虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄露和内存溢出的问题,看起来由虚…

Jenkins 设置定时任务

1、点击项目后点击Configure 2、点击Build Triggers勾选Build periodically 3、设置规则 # 样例展示&#xff1a; # 每天的22:00 执行 0 22 * * * # 每个月的1号22:00 执行 0 22 1 * *# 每周一到周五的晚上22&#xff1a;00&#xff0c; 1-5 表示周一到周五 0 22 * * 1-5# 每…

短视频平台的那些事

短视频平台的那些事 文章目录 短视频平台的那些事1. 前言2. 概览介绍3. 业务框架4. 关键技术能力4.1 视频处理4.1.1 FFMPEG技术 4.2 视频安全&#xff0c;合规4.2.1 视频安全审核4.2.2 视频MD5校验4.2.3 视频AI指纹 4.3 视频内容理解4.3.1 视频分类4.3.2 视频标签4.3.3 视频质量…

体育场馆能源消耗监测管理平台,为场馆提供能源服务

随着能源问题的不断重视&#xff0c;体育场馆能源问题也被人们广泛的关注。为了让体育场馆的能源高效利用&#xff0c;体育场馆能源消耗监测管理平台应用而生。 该平台通过采集、监测场内数据&#xff0c;并对数据进行实时分析与反馈&#xff0c;从而帮助管理者了解到场内能源…

用 Python 进行数据分析,不懂 Python,求合适的 Python 书籍或资料推荐?

想要学好Python数据分析&#xff0c;打好基础最重要&#xff0c;学习Python语言基础语法知识&#xff0c;推荐菜鸟教程这个网站。 Python 基础教程 | 菜鸟教程 ​www.runoob.com/python/python-tutorial.html 如果觉得文字教程生硬难懂的话&#xff0c;可以看视频教学&#xf…

网络安全工程师需要学习什么?争做网络安全守护使者

文章目录 前言 一、计算机基础知识二、网络安全技术三、信息安全法律法规四、风险评估与管理五、安全运维六、渗透测试与防护七、安全知识演练八、心理承受力与逆向思维九、团队合作与沟通能力十、持续学习和自我提升十一、道德与伦理十二、综合素质与领导力 如何入门学习网络…

LeetCode 143.重排链表

题目链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目解析 分析题目后我们可以直接进行模拟实现。 具体用到的就是我们之前的知识的结合&#xff0c;首先使用快慢指针找到链表的中间结点。然后将后半段链表给翻转一下&#xff0c;然后再让这…

Kotlin异常处理runCatching,getOrDefault,getOrNull run(2)

Kotlin异常处理runCatching&#xff0c;getOrDefault&#xff0c;getOrNull run&#xff08;2&#xff09; fun main(args: Array<String>) {runCatching {1 / 0 //发生异常}.getOrNull().run {println(this)}println("-")runCatching {1 / 1 //正常}.getOrNul…