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

洛谷1044栈C语言

这是一道利用了栈进行种类的求解的题目,一开始想使用深搜进行解决但是这样不仅时间复杂度会很高而且很难实现

没辙了,看题解——卡特兰数 ?什么鬼

后面我才意识到这道题和栈的所谓联系就是这个卡特兰数,事实上是一道考验知识点的动态规划题目

卡特兰数

卡特兰数(Catalan Number)是一组经典的组合数学序列,广泛应用于计算机科学和数学领域。它用来描述许多具有递归结构的问题,例如栈混洗、二叉树的构造、括号匹配等。

应用场景

  1. 栈混洗问题:(本题)

    1. 给定一个长度为 n 的序列,通过栈操作可以生成多少种不同的输出序列。(数字不重复)

  2. 合法括号序列:

    1. 构造长度为 2n2n 的合法括号序列(如 n=3n=3 时,可能的序列为 ()()(), (())(), ()(()), (()()), ((())))。

  3. 二叉树的构造:

    1. 使用 nn 个节点可以构造多少种不同的二叉树。

  4. 凸多边形的三角剖分:

    1. 一个 n+2n+2 边形可以通过对角线划分为多少种不同的三角形。

  5. 路径计数问题:

    1. 在网格中从左下角到右上角的路径中,要求路径不越过对角线,计算有多少条路径。

使用动态规划进行卡特兰数的计算(栈混洗问题)

问题进行拆解(分治思想): 假设有长度为n的序列[1,2……n],我们通过栈操作生成所有可能的输出序列:

  • 假设第一个出栈的元素是 kk(1≤k≤n1≤kn)。

  • k 出栈之前,必须先将 [1,2,…,k−1][1,2,…,k−1] 全部入栈并弹出,这对应于一个规模为k−1 的子问题。这些子问题有Ck-1种情况

  • k 出栈之后,剩下的 [k+1,k+2,…,n][k+1,k+2,…,n] 需要按照同样的规则生成输出序列,这对应于一个规模为nk 的子问题,有Cn-k种情况(这里数字是不可能出现重复的——况且只让你输入了一个数字)

当前第一个出栈元素对应的总方案数:

方案数(n)=方案数(k−1)⋅方案数(nk)

由于k可以是1-n中的任意一个值,需要将所有的情况进行相加才是真正该数量的数字进行栈混洗后的结果个数

#include<stdio.h>
int main(){
    int n;
    scanf("%d",&n);
    int dp[55]={1};//栈混洗问题当中,当数组昌都为0时,只有一种可能的输出:啥都没有
    for(int i=1;i<=n;i++){
        for(int j=1;j<=i;j++){
            dp[i]+=dp[j-1]*dp[i-j];
        }
    }
    printf("%d",dp[n]);
    return 0;
}

相关文章:

  • 2025Java面试TOP1000问:源码级解答+避坑指南+性能优化
  • [C++][STL]unordered_set类和unordered_map类
  • 【MySQL】从零开始:掌握MySQL数据库的核心概念(五)
  • columns实现瀑布流布局
  • ⑦(ACG-网络配置)
  • 06 单目标定-去畸变
  • React Native与原生Android数据传递
  • 【Unity】 鼠标拖动物体移动速度跟不上鼠标,会掉落
  • 学习《JS数据结构与算法》
  • 同步整流和异步整流区别及其各优点
  • vm虚拟机 Ubuntu ping失败情况解决方法
  • Python的迭代器(Iterator)介绍以及实现多次使用
  • SVTAV1热点函数-svt_ext_all_sad_calculation_8x8_16x16_avx2
  • pip 安装某个包之后,Jupyter Lab仍旧显示包冲突;例如:Numba needs NumPy 2.1 or less. Got NumPy 2.2.
  • 热血传奇2超高清重置UI素材
  • Java并发编程
  • SAP-ABAP:OData 协议深度解析:架构、实践与最佳应用
  • 重学Java基础篇—什么是快速失败(fail-fast)和安全失败(fail-safe)?
  • 【Pandas】pandas Series to_xarray
  • 类和对象—继承(1)
  • 郓城住房和城乡建设局网站/谷歌seo推广服务
  • 政府门户网站建设需求报告/谷歌chrome浏览器官方下载
  • 东莞公司建设网站制作/网站优化包括哪些
  • 家居装饰网站设计论文/百度公司官网
  • 电暖怎么做网站/资源网站优化排名优化
  • 市场部做网站工作职责/window优化大师官网