当前位置: 首页 > news >正文

P1044 [NOIP2003 普及组] 栈题解

题目

有一个单端封闭的管子,将N(1<=N<=18)个不同的小球按顺序放入管子的一端。在将小球放入管子的过程中也可以将管子最顶上的一个或者多个小球倒出来。请问:倒出来的方法总数有多少种?

输入输出格式

输入格式

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

输出格式

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

输入输出样例

输入样例

3

输出样例

5

解析

假设i个元素一共有h[i]种出管方式。要求n个元素的出管方式,但是其中每一个元素(从1到n)都可能是最后一个出管的。假设第k个小球是最后一个出管的,比k早入管且早出管有k-1个数,一共有h[k-1]种出管方式;比k晚入管且早出管有n-k个数,一共有h[n-k]种出管方式。这种情况下一共就有h[k-1]*h[n-k]种出管方式。当k取不同值的时候,产生的出管序列也是独立的。所以可以加起来。k的取值范围可以是从1到n。所以递推式是h(n)=h(0)*h(n-1)+h(1)*h(n-2)+……+h(n-1)*h(0),初始条件是h[0]=h[1]=1。

#include<cstdio>
int main(){int n,h[20]={1,1};scanf("%d",&n);for(int i=2;i<=n;i++){for(int j=0;j<i;j++){h[i]+=h[j]*h[i-j-1];}}printf("%d",h[n]);return 0;
}
http://www.lryc.cn/news/297803.html

相关文章:

  • 【DSP】数字信号处理发展里程碑(AI【文心一言】 辅助生成)
  • 【JavaScript 】finally() 方法和Filter() 方法
  • 假期作业8
  • 基于vue+node.js的校园跳蚤市场系统多商家
  • Linux操作系统基础(六):Linux常见命令(一)
  • 【Android-Compose】Material3 新版下拉刷新 PullRefresh
  • FANUC机器人外部远程启动的相关参数设置示例
  • 供货商、品牌方、供应链如何对接快团团头部大团长?这三个关键点你一定要记住
  • LLMs之Llama2 70B:《Self-Rewarding Language Models自我奖励语言模型》翻译与解读
  • 电商小程序06用户审核
  • vue3跨组件(多组件)通信:事件总线【Event Bus】
  • 教材管理系统
  • PV、UV、IP
  • ZigBee学习——在官方例程上实现串口通信
  • nginx添加lua模块
  • Csapp-chapter3-压栈和弹栈
  • Rust入门1——HelloWorld
  • android中使用Bitmp对象绘制图形
  • Linux操作系统基础(八):Linux的vi/vim编辑器
  • nginx限制网段访问
  • Linux开机自动执行自定义脚本或命令
  • 【Linux】 网络编程套接字
  • MATLAB矩阵的操作(第二部分)
  • 基础面试题整理6之Redis
  • MySQL基础查询篇(7)-常用的字符串函数
  • 如何实现视线(目光)的检测与实时跟踪
  • STM32 FSMC (Flexible static memory controller) 灵活静态内存控制器介绍
  • 手把手教你开发Python桌面应用-PyQt6图书管理系统-图书信息维护模块UI设计实现
  • SpringBoot源码解读与原理分析(六)WebMvc场景的自动装配
  • git恢复rebase过程中遇到权限问题和丢失的提交