洛谷P1044题解

news2024/11/17 23:51:42

 复制Markdown  展开

题目背景

栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。

栈有两种最重要的操作,即 pop(从栈顶弹出一个元素)和 push(将一个元素进栈)。

栈的重要性不言自明,任何一门数据结构的课程都会介绍栈。宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙。

题目描述

宁宁考虑的是这样一个问题:一个操作数序列,1,2,…,n(图示为 1 到 3 的情况),栈 A 的深度大于 n。

现在可以进行两种操作,

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

使用这两种操作,由一个操作数序列就可以得到一系列的输出序列,下图所示为由 1 2 3 生成序列 2 3 1 的过程。

(原始状态如上图所示)

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

输入格式

输入文件只含一个整数 n(1≤n≤18)。

输出格式

输出文件只有一行,即可能输出序列的总数目。

输入输出样例

输入 #1

3

输出 #1

5

说明/提示

【题目来源】

NOIP 2003 普及组第三题

思路

建立数组f。f[i]表示i个数的全部可能性。

f[0]=1,f[1]=1; 

设 x 为当前出栈序列的最后一个,则x有n种取值

由于x是最后一个出栈的,所以可以将已经出栈的数分成两部分

  1. 比x小

  2. 比x大

比x小的数有x-1个,所以这些数的全部出栈可能为f[x-1]

比x大的数有n-x个,所以这些数的全部出栈可能为f[n-x]

这两部分互相影响,所以一个x的取值能够得到的所有可能性为f[x-1]*f[n-x]

另外,由于x有n个取值,所以 ans=f[0]*f[n-1]+f[1]*f[n-2

]+...+f[n-1]*f[0];

AC Code

#include <bits/stdc++.h>
using namespace std;
int n,f[1001];
int main(){
    cin>>n;
    f[0]=1,f[1]=1;
    for(int i=2;i<=n;i++)              
        for(int j=0;j<i;j++) 
            f[i]+=f[j]*f[i-j-1]; 
    cout<<f[n];
    return 0;
}

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

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

相关文章

stm32触发硬件错误位置定位

1.背景 1. 项目中&#xff0c;调试过程或者测试中都会出现程序跑飞问题&#xff0c;这个时候问题特别难查找。 2. 触发硬件错误往往是因为内存错误。这种问题特别难查找&#xff0c;尤其是产品到了测试阶段&#xff0c;而这个异常复现又比较难的情况下&#xff0c;简直头疼。…

CDH6.3.1离线安装

一、从官方文档整体认识CDH 官方文档地址如下&#xff1a; CDH Overview | 6.3.x | Cloudera Documentation CDH是Apache Hadoop和相关项目中最完整、测试最全面、最受欢迎的发行版。CDH提供Hadoop的核心元素、可扩展存储和分布式计算&#xff0c;以及基于Web的用户界面和重…

虚拟游戏理财【华为OD机试-JAVAPythonC++JS】

题目描述 题目描述&#xff1a; 在一款虚拟游戏中生活&#xff0c;你必须进行投资以增强在虚拟游戏中的资产以免被淘汰出局。现有一家Bank&#xff0c;它提供有若干理财产品m&#xff0c;风险及投资回报不同&#xff0c;你有N&#xff08;元&#xff09;进行投资&#xff0c;能…

Python:练习:编写一个程序,录入一个美元数量(int),然后显示出增加%5税率后的相应金额。

案例&#xff1a; 编写一个程序&#xff0c;录入一个美元数量&#xff08;int&#xff09;&#xff0c;然后显示出增加%5税率后的相应金额。格式如下所示&#xff1a; Enter an amount:100 With tax added:$105.0 思考&#xff1a; 1、录入一个美元数量&#xff0c;录入&am…

qt学习:实战 记事本 + 快捷键 + 鼠标滚轮 + 打开读取写入关闭文件

目录 功能 步骤 配置ui界面 添加图片资源 添加头文件和定义成员数据和成员函数 在构造函数里初始化 增加当前字体大小函数 减小当前字体大小函数 在用户按下 Ctrl 键的同时滚动鼠标滚轮时&#xff0c;执行放大或缩小操作 多选框变化后发出信号绑定槽函数来改变编码 …

flutter学习(一) 安装以及配置环境

首先需要下载flutter&#xff0c;然后解压 然后配置环境变量&#xff0c;配置到bin目录就行 配置完之后cmd运行flutter doctor 你就会发现&#xff0c;都是错 此时脑海里响起&#xff0c;卧槽&#xff0c;怎么回事&#xff0c;咋办 别着急&#xff0c;我教你。。。 问题 这…

【QQ案例-QQ框架-主流框架 Objective-C语言】

一、接下来,我们来做一下这个QQ, 1.接下来,我们来做一下这个QQ, QQ框架啊, 这个东西呢,我们管它叫做“主流框架”, 首先呢,要告诉大家一点,这个东西呢,我们管它,叫做“主流框架”, 算是一个简称啊, 只能说,这种框架的类型,上边儿带navigation,下边儿带tabb…

Linux centos 变更MySQL数据存储路径

Linux centos 变更MySQL数据存储路径 登录mysql&#xff0c;查看数据存储路径创建新目录准备迁移数据检查是否配置成功 登录mysql&#xff0c;查看数据存储路径 mysql -u root -pshow global variables like "%datadir%";创建新目录 查看磁盘空间 df -h选取最大磁…

论文阅读:2015ResNet深度残差网络(待补充)

top5错误率&#xff1a;每张图片算法都会给出它认为最可能的五个类别&#xff0c;五个里面有一个是正确则算法预测正确。 技术爆炸1&#xff1a;2012年&#xff0c;DL和CNN用于CV&#xff1b;技术爆炸2&#xff1a;2015年&#xff0c;超过人类水平&#xff0c;网络可以更深&…

Unity-PDF分割器(iTextSharp)

PDF分割器 Unity-PDF分割器前言核心思路解决过程一、Unity安装iTextSharp二、运行时计算将要生成文件的大小三、分割核心代码四、使用StandaloneFileBrowser五、其他的一些脚本六、游戏界面主体的构建MainWindowWarningPanel & FinishPanel By-Round Moon Unity-PDF分割器 …

Vue3 在SCSS中使用v-bind

template 先创建一个通用的页面结构 <template><div class"v-bubble-bg"></div> </template>js 在JS中先对需要用的数据进行定义&#xff1a; 可以是参数&#xff0c;也可以是data <script setup>const props defineProps({bgCol…

Linux零基础快速入门

Linux的诞生 Linux创始人:林纳斯 托瓦兹 Linux 诞生于1991年&#xff0c;作者上大学期间 因为创始人在上大学期间经常需要浏览新闻和处理邮件&#xff0c;发现现有的操作系统不好用,于是他决心自己写一个保护模式下的操作系统&#xff0c;这就是Linux的原型&#xff0c;当时他…

【笔记】:更方便的将一个List中的数据传入另一个List中,避免多重循环

这里是 simpleInfoList 集合&#xff0c;记为集合A&#xff08;传值对象&#xff09; List<CourseSimpleInfoDTO> simpleInfoList courseClient.getSimpleInfoList(courseIds);if(simpleInfoListnull){throw new BizIllegalException("当前课程不存在!");}这…

[Flutter]TextButton自定义样式

在Flutter中&#xff0c;TextButton是一个简单的文本按钮&#xff0c;它遵循当前的Theme。如果你想要修改TextButton的样式&#xff0c;可以通过设置其style属性来实现&#xff0c;该属性接收一个ButtonStyle对象。 给TextButton和里面Text添加背景后&#xff0c;效果如下。可…

设计模式(二)单例模式

单例模式&#xff1a;确保一个类只有一个实例&#xff0c;并提供了全局访问点&#xff1b;主要是用于控制共享资源的访问&#xff1b; 单例模式的实现分为懒汉式和饿汉式。 懒汉式单例在需要时才会创建&#xff0c;而饿汉式单例则在类加载时立即创建实例&#xff1b; 单例模…

【精准获客,优化体验】Xinstall助力企业提升App渠道效果与用户满意度

在数字化时代&#xff0c;企业对于用户体验的重视程度日益提升。为了更好地满足用户需求&#xff0c;提供个性化、专属化的服务已经成为企业竞争的关键。今天&#xff0c;我们将向大家介绍一款名为Xinstall的一站式App全渠道统计服务商&#xff0c;它凭借强大的技术实力和丰富的…

【测试开发面试复习(一)】计算机网络:计算机网络体系结构(P1)补充ing

我每次复习的第一趴都是网络。。 一、高频面试题记录 1.1 计算机网络为什么要分层&#xff1f; 网络庞大而且复杂&#xff08;大量的软硬件系统、大量的程序和协议等&#xff09;&#xff0c;分层可提高整体结构的灵活性、将层次之间结构解耦&#xff0c;各层相互独立、隔离&…

轻松三步制作电子签名

一、在纸上签名&#xff0c;并且拍照。 二、新建空白word文档&#xff0c;使用WPS方式打开&#xff0c;再将图片复制进来。 三、点击图片&#xff0c;先选择【图片工具】中的【设置透明色】&#xff0c;然后点击签名之外的图片背景&#xff0c;即可制作为矢量图&#xff1b…

Redis 面试指南:常见问题及最佳答案

Redis 是一个高性能的键值存储系统&#xff0c;已经成为了许多企业和互联网公司的核心技术之一。本文将总结 Redis 面试中常见的问题&#xff0c;并提供最佳答案&#xff0c;以帮助读者更好地准备 Redis 面试。 引言&#xff1a; Redis 是一个开源、高性能、键值存储系统&…

朴素贝叶斯(带你从原理到实践)

目录 一、引言 二、朴素贝叶斯算法原理 1 贝叶斯定理 2 特征条件独立假设 3 分类过程 三、实践事例 四、朴素贝叶斯算法应用 1 文本分类 2 垃圾邮件过滤 3 情感分析 五、朴素贝叶斯算法未来发展 1 特征选择优化 2 半监督学习与无监督学习 3 结合深度学习 4 处理…