【动态规划,dp】P1044[NOIP2003 普及组] 栈 题解

news2024/9/20 8:10:39

题意

给定一个 n ( 1 ≤ n ≤ 18 ) n(1 \leq n \leq 18) n(1n18),表示一个操作数序列, 1 , 2 , … , n 1,2,…,n 1,2,,n(图示为 1 到 3 的情况),栈 A 的深度大于 n n n

现在可以进行两种操作,

  • 将一个数,从操作数序列的头端移到栈的头端(对应数据结构栈的 push 操作)
  • 将一个数,从栈的头端移到输出序列的尾端(对应数据结构栈的 pop 操作)

下图为当 n = 3 n = 3 n=3 时一种合法的解(即 2 3 1
在这里插入图片描述

你的程序将对给定的 n n n,计算并输出由操作数序列 1 , 2 , … , n 1,2,…,n 1,2,,n 经过操作可能得到的输出序列的总数。

思路

考虑 d p i , j dp_{i,j} dpi,j 表示当前已经用了 i i i 次进栈操作和 j ( 1 ≤ j ≤ i ) j(1\leq j \leq i) j(1ji) 次操作的方案数,则当前方案可能由两种方案推来:

  • 当前进行的是进栈操作,则 d p i , j ← d p i − 1 , j dp_{i,j} \gets dp_{i - 1,j} dpi,jdpi1,j,无须担心 i = j i = j i=j时会不会有问题,因为当 i = j i=j i=j i − 1 < j i - 1< j i1<j,因此 d p i − 1 , j dp_{i - 1,j} dpi1,j 等于初始值,即为 0 0 0
  • 进行的是出栈操作,则 d p i , j ← d p i , j − 1 dp_{i,j} \gets dp_{i,j - 1} dpi,jdpi,j1

综上所述, d p i , j ← d p i − 1 , j + d p i , j − 1 , 1 ≤ j ≤ i dp_{i,j} \gets dp_{i - 1,j} + dp_{i,j - 1},1 \leq j \leq i dpi,jdpi1,j+dpi,j1,1ji

考虑边界条件,对于进栈次数为 i i i 并且从未出栈,则方案数肯定为 1 1 1 d p i , 0 = 1 dp_{i,0} = 1 dpi,0=1

答案显而易见为 d p n , n dp_{n,n} dpn,n

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,dp[20][20]; 
signed main() {
	scanf("%lld",&n);
	for(int i = 1;i <= n;i++) dp[i][0] = 1;
	for(int i = 1;i <= n;i++) {
		for(int j = 1;j <= i;j++) {
			dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
		}
	}
	printf("%lld\n",dp[n][n]);
    return 0;
}

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

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

相关文章

如何选出高品质 SD 存储卡 —— 具备高耐用度且防水防震抗冲击

SD卡&#xff08;Secure Digital Memory Card&#xff09;是一种广泛使用的存储器件&#xff0c;因其快速的数据传输速度、可热插拔的特性以及较大的存储容量&#xff0c;广泛应用于各种场景&#xff0c;例如在便携式设备如智能手机、平板电脑、运动相机等&#xff0c;用于存储…

录屏为什么录制不进去,没有声音?屏幕录制中的声音问题及解决方案

在数字时代&#xff0c;屏幕录制已成为我们日常工作和生活中不可或缺的一部分。无论是制作教学视频、记录在线课程&#xff0c;还是捕捉游戏精彩瞬间&#xff0c;一个好的屏幕录制软件都能让我们的工作更加高效&#xff0c;生活更加丰富。然而&#xff0c;许多用户在使用屏幕录…

谈一谈数据虚拟化的技术核心和应用架构

数据虚拟化&#xff08;Data Virtualization&#xff09;是对数据资源的抽象&#xff0c;通过屏蔽数据资源的存储位置和访问方式&#xff0c;能够将不同数据源、不同格式的数据资源&#xff0c;进行逻辑上的整合集成。这一技术方案与过去面对传统数仓的弊端&#xff0c;业界过去…

为什么说凤凰雪球期权是震荡市场中的稳健选择?

在当前股市波动的背景下&#xff0c;投资者会发现传统的投资策略难以适应市场的快速变化。在这样的环境下&#xff0c;一些创新的金融产品&#xff0c;如凤凰雪球&#xff0c;因其相对较高的安全性和潜在的收益性&#xff0c;逐渐受到市场的关注。 近期&#xff0c;股市呈现出…

大语言模型的简易可扩展增量预训练策略

前言 原论文&#xff1a;Simple and Scalable Strategies to Continually Pre-train Large Language Models翻译文件已整理至Github项目Some-Paper-CN&#xff0c;欢迎大家Star&#xff01; 摘要 大语言模型&#xff08;LLMs&#xff09;通常需要在数十亿个tokens上进行预训…

存储实验:华为异构存储在线接管与在线数据迁移(Smart Virtualization Smart Migration 特性)

目录 目的实验环境实验步骤参考文档1. 主机安装存储多路径2. v2存储创建Lun&#xff0c;映射给主机&#xff1b;主机分区格式化&#xff0c;写数据3. 将v2存储映射该成映射到v3存储上(v3存储和v2之间链路搭建&#xff0c;测通&#xff0c;远端设备&#xff09;&#xff08;Smar…

【深度学习】DDPM公式详解(第一期)

原论文&#xff1a;Denoising Diffusion Probabilistic Models (1)-1 p θ ( x 0 : T ) : p ( x T ) ∏ t 1 T p θ ( x t − 1 ∣ x t ) p_{\theta}(x_0:T) : p(x_T) \prod_{t1}^{T} p_{\theta}(x_{t-1} \mid x_t) pθ​(x0​:T):p(xT​)t1∏T​pθ​(xt−1​∣xt​) 这个…

AI预测福彩3D采取888=3策略+和值012路或胆码测试8月16日新模型预测第58弹

经过近60期的测试&#xff0c;当然有很多彩友也一直在观察我每天发的预测结果&#xff0c;得到了一个非常有价值的信息&#xff0c;那就是9码定位的命中率非常高&#xff0c;57期一共只错了5次&#xff0c;这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了&#xff0c;大…

IoTSharp:基于 .NET 6.0 的开源物联网平台

目录 前言 项目介绍 为什么会有 IoTSharp&#xff1f; IoTSharp 能做什么&#xff1f; IoTSharp 的亮点 项目技术 1、编程语言 2、系统框架 3、数据库支持 4、消息队列与 EventBus 5、EventBus 存储 项目使用 1、下载 2、启动 3、注册服务 4、初始化influxdb 5…

实现清除默认样式的操作

1、在npm官网中搜索reset.scss->点击第一个。&#xff08;有时候会更新一些代码&#xff0c;第一个出现的不一定就是我图片中的这个&#xff0c;不一定要跟我图片中的代码一致&#xff0c;只需要选择第一个出现的即可&#xff09; 2、点击Code选项。 3、打开Code选项下面的t…

在私有化过程中不要忽视LLMs的双重逻辑能力:医学领域的数据密集型分析

链接&#xff1a;https://arxiv.org/abs/2309.04198 原标题&#xff1a;Don’t Ignore Dual Logic Ability of LLMs while Privatizing: A Data-Intensive Analysis in Medical Domain 日期&#xff1a;Submitted on 8 Sep 2023 摘要 大量的研究致力于通过喂养特定领域的数据…

智能楼宇控制系统的革新——M31系列分布式IO模块

随着物联网技术的飞速发展&#xff0c;智能楼宇控制系统正逐渐成为现代建筑的标配。它不仅能够提高建筑的能源效率&#xff0c;还能提升用户的生活品质和舒适度。在这样的背景下&#xff0c;分布式IO模块作为智能楼宇控制系统的核心组成部分&#xff0c;发挥着至关重要的作用。…

深度学习9--目标检测

1.概念介绍 目标检测不仅可以检测数字&#xff0c;而且可以检测动物的种类、汽车的种类等。例如&#xff0c;自动驾驶车辆需要自动识别前方物体是车辆还是行人&#xff0c;需要自动识别道路两 旁的指示牌和前方的红绿灯颜色。对于自动检测的算法&#xff0c;有两个要求&#xf…

聊聊场景及场景测试

在我们进行测试过程中&#xff0c;有一种黑盒测试叫场景测试&#xff0c;我们完全是从用户的角度去理解系统&#xff0c;从而可以挖掘用户的隐含需求。 场景是指用户会使用这个系统来完成预定目标的所有情况的集合。 场景本身也代表了用户的需求&#xff0c;所以我们可以认为…

项目管理工具的秘密:如何选出最佳系统

国内外主流的 10 款project项目管理系统对比&#xff1a;PingCode、Worktile、用友、泛微、蓝凌、Zoho Projects、Asana、Trello、Basecamp、Jira。 在寻找合适的项目管理系统时&#xff0c;你是否感到选择众多、功能复杂让人难以抉择&#xff1f;这正是许多项目经理面临的痛点…

计算机毕业设计选题推荐-个性化智能学习系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

MySQL架构与数据库基础

文章目录 一、数据库概念二、数据库的简单概念三、SQL四、MySQL架构 一、数据库概念 数据库是一个以某种由组织的方式存储的数据集合。我们可以把数据库想象称为一个文件柜。此文件柜是一个存放数据的物理位置&#xff0c;不管数据是什么以及如何组织的。数据库本质也需要像文…

C++-类与对象(上篇)

一、目标&#xff1a; 1. 面向过程和面向对象初步认识 2. 类的引入 3. 类的定义 4. 类的访问限定符及封装 5. 类的作用域 6. 类的实例化 7. 类的对象大小的计算 8. 类成员函数的 this 指针 二、对类与对象的介绍&#xff1a; 1.面向过程和面向对象初步认识 &#xff1a…

调用FluentUI中的折线图散点图等

文章目录 0.文章介绍1.源码位置2.线性图&#xff1a;基础版本2.1效果图2.2代码 3.线形图&#xff1a;封装版本3.1 效果图3.2 代码 0.文章介绍 调用项目FluentUI中的散点图、折线图组件&#xff0c;做定制化改进。 项目FluentUI源码位置&#xff1a;https://github.com/zhuzich…

手把手教你SpringBoot项目将Swagger升级3.0详解

SpringBoot项目将Swagger升级3.0 前言 这阵子观察到Swagger官方已经升级到了3.0的版本&#xff0c;想着升级体验一下最新的版本 新特性 移除了2.x版本的冲突版本&#xff0c;移除了guava等移除了EnableSwagger2新增了springfox-boot-starter… 引入依赖 新版本中&#xf…