蓝桥杯算法题:栈(Stack)



这道题考的是递推动态规划,可能不是很难,不过这是自己第一次靠自己想出状态转移方程,所以纪念一下:
要做这些题目,首先要把题目中会出现什么状态给找出来,然后想想他们的状态可以通过什么操作转移,进而写出状态转移方程
这道题的状态可以分为三个,一个是已输出序列,另一个是栈中序列,另一个是未输入序列,那有什么操作可以改变序列呢,有两个,操作一是未输入序列往栈中放数字,操作二是栈中序列把数字输出到已输出序列。这时设置一数组f[i][j][k],i表示已输出序列长度,j表示栈中序列长度,k表示未输入序列的长度,则可以根据红字的操作写出状态转移方程:f[i][j][k]=f[i][j-1][k+1]+f[i-1][j+1][k];
其中[i][j-1][k+1]变为f[i][j][k]表示操作一,f[i-1][j+1][k]变成f[i][j][k]表示操作二(注意有些状态只能由一个操作转换而来,不然就发生不可能的情况,即越界)比如说{2,0,1}只能由状态{1,1,1}转变而来,不能由{2,-1,2}转变而来
#include<bits/stdc++.h>
using namespace std;
int f[20][20][20];
int main(){int n;cin>>n;for(int i=0;i<=n;i++){f[0][i][n-i]=1;f[i][0][n-i]=1;//这两种情况,栈里数的顺序是唯一的,所以个数也就为1}for(int i=1;i<=n;i++){for(int j=0;j<=n;j++){for(int k=0;k<=n;k++){if(i+j+k==n){if(j==n&&k<=n-1)f[i][j][k]=f[i][j-1][k+1];else if(j==0||k==n)f[i][j][k]=f[i-1][j+1][k];else f[i][j][k]=f[i-1][j+1][k]+f[i][j-1][k+1];}}}} cout<<f[n][0][0]<<endl;
}
不过我又去看了别人的题解,似乎更好,又学到了,其实我也想过用一个数的位置来看状态,不过没能想得那么利索

相关文章:
蓝桥杯算法题:栈(Stack)
这道题考的是递推动态规划,可能不是很难,不过这是自己第一次靠自己想出状态转移方程,所以纪念一下: 要做这些题目,首先要把题目中会出现什么状态给找出来,然后想想他们的状态可以通过什么操作转移…...
JavaWeb-监听器
文章目录 1.基本介绍2.ServletContextListener1.基本介绍2.创建maven项目,导入依赖3.代码演示1.实现ServletContextListener接口2.配置web.xml3.结果 3.ServletContextAttributeListener监听器1.基本介绍2.代码实例1.ServletContextAttributeListener.java2.配置web…...
系统架构设计基础知识
一. 系统架构概述系统架构的定义 系统架构(System Architecture)是系统的一种整体的高层次的结构表示,是系统的骨架和根基,支撑和链接各个部分,包括构件、连接件、约束规范以及指导这些内容设计与演化的原理࿰…...
Vue自定义指令介绍及使用方法
介绍 除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外,Vue 还允许你注册自定义的指令 (Custom Directives)。 之前已经介绍了两种在 Vue 中重用代码的方式:组件 和 组合式函数。组件是主要的构建模块,而组合式函数则侧重于有状态…...
React 组件生命周期函数的用法和示例代码
React 中的生命周期函数可以分为三个阶段:Mounting(挂载),Updating(更新)和 Unmounting(卸载)。每个阶段都有不同的函数,用于执行不同的操作。 Mounting(挂载…...
【nginx运维】[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
关于nginx端口被占用的问题: If you get following error, when you try to start nginx… [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) Then it means nginx or some other process is already using port 80. You can kill it using: su…...
浏览器工作原理与实践--虚拟DOM:虚拟DOM和实际的DOM有何不同
虚拟DOM是最近非常火的技术,两大著名前端框架React和Vue都使用了虚拟DOM,所以我觉得非常有必要结合浏览器的工作机制对虚拟DOM进行一次分析。当然了,React和Vue框架本身所蕴含的知识点非常多,而且也不是我们专栏的重点,…...
arm工作模式、arm9通用寄存器、异常向量表中irq的异常向量、cpsr中的哪几位是用来设置工作模式以及r13,r14,15别名是什么?有什么作用?
ARM 首先先介绍一下ARM公司。 ARM成立于1990年11月,前身为Acorn计算机公司 主要设计ARM系列RISC处理器内核 授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片 提供基于ARM架构的开发设计技术软件工具评估版调试工具应用软件总线架构外围设备单元等等CPU中…...
电脑上音频太多,播放速度又不一致,如何批量调节音频播放速度?
批量调节音频速度是现代音频处理中的一个重要环节,尤其在音乐制作、电影剪辑、有声书制作等领域,它能够帮助制作者快速高效地调整音频的播放速度,从而满足特定的制作需求。本文将详细介绍批量调节音频速度的方法、技巧和注意事项,…...
pe格式从入门到图形化显示(十)-扩展最后一个节
文章目录 前言一、怎么扩展最后一个节?二、扩大节1.扩展节2.保存文件 前言 通过分析和解析Windows PE格式,并使用qt进行图形化显示 一、怎么扩展最后一个节? 在PE文件中,扩大最后一个节通常是通过修改PE文件头中的节表来实现的。…...
设计模式之创建型模式---建造者模式
文章目录 建造者模式概述经典的建造者模式建造者模式的变种总结 建造者模式概述 建造者模式是一种广泛使用的设计模式,在三方开源库和各种SDK中经常见到。建造者设计模式在四人帮的经典著作《设计模式:可复用面向对象软件基础》中被提及,它的…...
如何从零开始训练一个语言模型
如何从零开始训练一个语言模型 #mermaid-svg-gtUlIrFtNPw1oV5a {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gtUlIrFtNPw1oV5a .error-icon{fill:#552222;}#mermaid-svg-gtUlIrFtNPw1oV5a .error-text{fill:#5522…...
Python 设计一个监督自己的软件1
基本要求:每做一件事,软件就会按照事情权重加相应的分数,总分数也会增加,要可视化页面 使用Python编写的一个简单的日常任务记录和评分系统,包括可视化页面。 首先,我们定义一个任务字典,其中包含各种日常任务及其对应的权重分数…...
商家转账到零钱权限开通操作攻略
商家转账到零钱是什么? 商家转账到零钱是微信商户号里的一个功能,很早以前叫企业付款到零钱。 从2022年5月18日,原“企业付款到零钱”升级为“商家转账到零钱”,已开通商户的功能使用暂不受影响,新开通商户可前往「产…...
【DAC‘ 2022】Kite: A Family of Heterogeneous Interposer Topologies
Kite: A Family of Heterogeneous Interposer Topologies Enabled via Accurate Interconnect Modeling 背景和动机 背景动机 工作内容 KITE 拓扑 实验方法和评估结果 Kite: A Family of Heterogeneous Interposer Topologies Enabled via Accurate Interconnect Modeling 通…...
数据结构—堆
什么是堆 堆是一种特殊的树形结构,其中每个节点都有一个值。堆可以分为两种类型:最大堆和最小堆。在最大堆中,每个节点的值都大于等于其子节点的值;而在最小堆中,每个节点的值都小于等于其子节点的值。这种特性使得堆…...
Kubernetes学习笔记8
Kubernetes集群客户端工具kubectl 我们已经能够部署Kubernetes了,那么我们如何使用Kubernetes集群运行企业的应用程序呢?那么,我们就需要使用命令行工具kubectl。 kubectl就是控制Kubernetes的驾驶舱,它允许你执行所有可能的Kube…...
[渗透利器]在线渗透测试工具箱?测评
前言 hxd更新完了在线工具箱,受邀写一下使用体验以及测评 使用体验 这个工具箱设计的比较轻便,以往用过的工具箱大多都是以离线打包的方式发布,该工具箱,作者自己掏钱自己买服务器,自己买带宽,先生大义。…...
rocketmq和rabbitmq总是分不清?
1. 官方解答 摘自百度搜索: 2. 通俗易懂的回答...
利用Python ARM网关仓储物流AGV小车控制器
在现代智慧物流体系中,高效的信息管理系统是物流中心实现精准跟踪货物、科学管理库存及优化配送路线的关键环节。通过采用ARM架构的工控机或网关,并结合Python的二次开发能力,可以有效集成并强化物流管理系统的数据处理与通信功能,…...
文脉定序应用场景:企业知识库‘搜得到更排得准’的语义校准落地方案
文脉定序应用场景:企业知识库搜得到更排得准的语义校准落地方案 1. 企业知识库检索的痛点与挑战 在企业日常运营中,知识库扮演着重要角色。无论是产品文档、技术资料、客户案例还是内部流程,都需要一个高效的知识检索系统。然而,…...
MoneyPrinterPlus未来路线图深度解析:AI短视频生成工具的终极进化指南 [特殊字符]
MoneyPrinterPlus未来路线图深度解析:AI短视频生成工具的终极进化指南 🚀 【免费下载链接】MoneyPrinterPlus 使用AI大模型技术,一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! Generat…...
智能驾驶中的惯性导航:从L2到L4的IMU选型指南(2023最新)
智能驾驶中的惯性导航:从L2到L4的IMU选型指南(2023最新) 当特斯拉Model 3在隧道中失去GPS信号时,车载IMU仍能保持厘米级定位精度——这背后是惯性导航技术在自动驾驶领域的革命性应用。不同于消费级电子设备中仅用于计步的简易传感…...
从Desat故障到设计哲学:构建高鲁棒性控制器的系统化方法
1. 从Desat故障现象说起:IGBT的"心脏病发作" 第一次遇到Desat故障报警时,我盯着示波器上跳动的波形百思不得其解——明明电路设计完全参照了芯片厂商的参考方案,为什么样机在高温测试时频繁报错?这种经历相信很多电力电…...
别再手动调顺序了!用Vue3+Element Plus+Sortable.js给你的表格加个拖拽编辑弹窗(附完整代码)
Vue3Element PlusSortable.js打造高交互表格编辑弹窗实战 后台管理系统开发中,表格数据的顺序调整和字段管理一直是高频痛点。传统方案往往需要反复点击"上移/下移"按钮或填写表单参数,操作繁琐且体验割裂。本文将带你实现一个弹窗内一站式拖…...
OpenClaw自动化写作:用nanobot生成技术文档草稿
OpenClaw自动化写作:用nanobot生成技术文档草稿 1. 为什么需要自动化写作助手 作为一个经常需要撰写技术文档的开发者,我长期被两个问题困扰:一是从大纲到完整内容的填充过程耗时费力,二是反复检查格式和语法错误消耗大量精力。…...
丹青识画系统助力PS软件插件开发:智能图像分析功能扩展
丹青识画系统助力PS软件插件开发:智能图像分析功能扩展 作为一名和设计工具打了十几年交道的“老炮儿”,我见过太多设计师朋友在创意构思和细节调整时陷入纠结。一张图,色彩搭配是否和谐?构图有没有更好的可能?很多时…...
腾讯地图API实战:5分钟搞定经纬度录入与地图选点功能(Vue版)
腾讯地图API实战:5分钟搞定经纬度录入与地图选点功能(Vue版) 在当今的Web开发中,地图功能已成为许多应用的标配需求。无论是电商平台的店铺定位,还是社交应用的位置分享,甚至是企业内部系统的区域管理&…...
终极指南:如何安全自定义英雄联盟客户端视觉体验
终极指南:如何安全自定义英雄联盟客户端视觉体验 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank LeaguePrank是一款基于LCU API开发的英雄联盟视觉定制工具,专门帮助玩家在不修改游戏文件、不触碰内存的…...
微信H5页面如何通过wx-open-launch-weapp标签跳转小程序?完整配置指南
微信H5跳转小程序全链路实战:从零配置wx-open-launch-weapp标签 在移动互联网生态中,微信H5与小程序的无缝跳转已成为提升用户体验的关键技术节点。许多开发者首次接触wx-open-launch-weapp标签时,往往会在业务域名验证、HTTPS部署等环节遭遇…...
