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

题解:洛谷 P1044 [NOIP 2003 普及组] 栈

【题目来源】

洛谷:P1044 [NOIP 2003 普及组] 栈 - 洛谷 (luogu.com.cn)

【题目描述】

image

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

现在可以进行两种操作,

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

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

image

(原始状态如上图所示)

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

【输入】

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

【输出】

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

【输入样例】

3

【输出样例】

5

【解题思路】

image

【算法标签】

《洛谷 P1044 栈》 #动态规划,dp# #数学# #递推# #Catalan数# #栈# #NOIP普及组# #2003#

【代码详解】

#include <bits/stdc++.h>
using namespace std;int main() {long long n;  // 输入的数字nlong long f[20] = {1, 1, 2};  // 初始化前三个卡特兰数cin >> n;  // 读取输入n// 计算卡特兰数f[3]到f[n]for (int i = 3; i <= n; i++) {f[i] = 0;  // 初始化当前卡特兰数为0// 根据卡特兰数递推公式计算for (int k = 1; k <= i; k++) {f[i] += f[k - 1] * f[i - k];  // 累加各项乘积}}cout << f[n];  // 输出第n个卡特兰数return 0;
}
// 使用记忆化DFS重写一遍
#include <bits/stdc++.h>
using namespace std;int n;
int dp[20][20][20]; // 记忆化数组// 记忆化DFS函数
// x: 当前已确定的左括号数量
// y: 可用的右括号数量(已匹配的左括号)
// z: 剩余未使用的左括号数量
// n: 总括号对数
int dfs(int x, int y, int z, int n) {// 所有括号都已使用if (x == n) return 1;// 如果已经计算过,直接返回结果if (dp[x][y][z]) return dp[x][y][z];// 尝试添加右括号(如果有可匹配的左括号)if (y > 0) dp[x][y][z] += dfs(x + 1, y - 1, z, n);// 尝试添加左括号(如果还有剩余)if (z > 0) dp[x][y][z] += dfs(x, y + 1, z - 1, n);return dp[x][y][z];
}int main() {cin >> n;// 初始状态:0个已确定的左括号,0个可匹配的右括号,n个剩余的左括号cout << dfs(0, 0, n, n);return 0;
}

【运行结果】

3
5
http://www.jsqmd.com/news/389928/

相关文章:

  • 超级创新【物流中心选址】基于企鹅优化算法在物流中心选址的应用附Matlab代码
  • 新手也能上手 10个降AI率软件降AIGC网站:继续教育必备工具深度测评与推荐
  • 救命神器 10个AI论文写作软件测评:专科生毕业论文+开题报告高效写作指南
  • 探索三相交错并联Buck电路双闭环控制的MATLAB/Simulink仿真之旅
  • 【8*】WQS二分学习笔记
  • 题解:洛谷 P2036 [COCI 2008/2009 #2] PERKET
  • 2026年考察升降平台工厂,重点关注这些核心指标,翻转平台/装车平台/自行走升降机/移动登车桥,升降平台厂商推荐榜 - 品牌推荐师
  • 不踩雷!继续教育降AI率工具 —— 千笔·专业降AIGC智能体
  • 照着用就行:千笔AI,抢手爆款的AI论文写作软件
  • [嵌入式系统-231]:传感器:模拟信号检测
  • 题解:洛谷 P1002 [NOIP 2002 普及组] 过河卒
  • 定稿前必看!AI论文网站 千笔AI VS 锐智 AI,专科生专属神器!
  • 实测才敢推!最强的降AI率平台 —— 千笔·降AIGC助手
  • 专科生收藏!千笔,普遍认可的AI论文平台
  • 残疾人代步车辅助避障,小型车视觉避障,室内外通行,输出安全行驶。
  • 高架桥防坠物检测,识别空中坠物,提前预警,输出风险提示。
  • Visual Studio Code(VS Code)的安装与使用
  • 题解:洛谷 P2392 kkksc03考前临时抱佛脚
  • 【数学】如何手撕根号套根号
  • 题解:洛谷 P3799 小 Y 拼木棒
  • 题解:洛谷 P1149 [NOIP 2008 提高组] 火柴棒等式
  • 题解:洛谷 P3654 First Step (ファーストステップ)
  • 1.winform中App.config配置mssql连接字符串
  • where关键字
  • 题解:洛谷 P3392 涂条纹
  • 题解:洛谷 P1088 [NOIP 2004 普及组] 火星人
  • 题解:洛谷 P1706 全排列问题
  • 2026评测揭秘:三边封拉链袋哪些厂商值得信赖?包装袋/四边封包装袋/自立拉链袋/纹路袋,三边封拉链袋生产厂家有哪些 - 品牌推荐师
  • 真空吸盘实力厂家大揭秘:2026年行业优选推荐,国内口碑好的真空吸盘品牌口碑推荐榜贵磁设备专注行业多年经验,口碑良好 - 品牌推荐师
  • 题解:洛谷 P1157 组合的输出