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

[蓝桥杯]求解台阶问题

求解台阶问题

题目描述

现一个算法求解台阶问题。介绍如下:

  • 对于高度为 nn 的台阶,从下往上走,每一步的阶数为 1,2,3 中的一个。问要走到顶部一共有多少种走法。

输入描述

输入一个数字 N (1≤N≤35)N (1≤N≤35),表示台阶的高度。

输出描述

输出一行,为走法总数。

输入输出样例

示例

输入

4

输出

 7

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M
  • 台阶问题解法(动态规划)

  • 对于高度为 n 的台阶,每次可走 1、2 或 3 步,求走法总数的问题,可通过动态规划高效解决。其核心递推公式为:
    f(n)=f(n−1)+f(n−2)+f(n−3)(n≥3)
    基础情况为:

  • f(0)=1(无台阶时视为 1 种方式)
  • f(1)=1(仅 1 种方式:走 1 步)
  • f(2)=2(2 种方式:1+1 或 2
  • ​初始化基础值​
    直接处理 n=0,1,2 的情况。
  • ​动态规划递推​
    使用滚动变量优化空间复杂度(O(1)):
    • 定义 a = f(0)b = f(1)c = f(2)
    • 从 i=3 开始迭代至 n:
      • 计算当前值 current = a + b + c
      • 滚动更新:a = bb = cc = current
  • ​输出结果​
    最终 c 即为 f(n)。
    #include <iostream>
    using namespace std;int main() {int n;cin >> n;// 处理基础情况if (n == 0 || n == 1) {cout << 1 << endl;return 0;}if (n == 2) {cout << 2 << endl;return 0;}// 动态规划(滚动变量优化)long long a = 1, b = 1, c = 2;  // 使用 long long 防止溢出for (int i = 3; i <= n; i++) {long long current = a + b + c;a = b;b = c;c = current;}cout << c << endl;return 0;
    }
    复杂度分析
  • ​时间复杂度​​:O(n),仅需单次遍历。
  • ​空间复杂度​​:O(1),仅用 3 个变量存储状态。
示例验证
输入 n输出 f(n)走法分解(共 f(n) 种)
111
221+12
341+1+11+22+13
471+1+1+11+1+21+2+12+1+12+21+33+1

    http://www.xdnf.cn/news/10951.html

    相关文章:

  • PCI DSS培训记录
  • 便携式雷达信号模拟器,定义复杂电磁环境模拟新标准
  • Docker 容器化:核心技术原理与实践
  • 微软PowerBI考试 PL300-Power BI 入门
  • Vue2 父子组件数据传递与同步详解
  • 访谈 | 吴恩达全景解读 AI Agents 发展现状:多智能体、工具生态、评估体系、语音栈、Vibe Coding 及创业建议一文尽览
  • vue实现点击单选或者多选模式
  • 简单爬虫框架实现
  • JavaScript 字符串的常用方法有哪些?
  • SpringCloud 分布式锁Redisson锁的重入性与看门狗机制 高并发 可重入
  • ALLEN BRADLEY特价型号1715-OB8DE 模块
  • 屈原精神的深度剖析:阶级局限与时代启示
  • 涨薪技术|0到1学会性能测试第94课-全链路脚本开发
  • 【iOS安全】Macbook更换brew源
  • 2025 年人脸识别技术应用备案政策已落地
  • 基于SpringBoot的“嗨玩旅游”网站设计与实现(源码+定制+开发)嗨玩旅游平台开发:景点展示与个性化推荐系统(SpringBoot)
  • Foundation Models for Generalist Geospatial Artificial Intelligence(NASA发布Prithvi)论文阅读
  • 定时线程池失效问题引发的思考
  • 远程桌面端口如何设置?你知道本地计算机怎么让外网电脑远程桌面连接访问吗?
  • nginx去掉暴漏外边的版本号
  • RTOS,其基本属性、语法、操作、api
  • Python 子进程通信:构建可靠的进程间消息交换系统
  • 5.3_3由遍历序列构造二叉树
  • 集合类基础概念
  • SMART原则讲解
  • centos挂载目录满但实际未满引发系统宕机
  • leetcode491.递增子序列:HashSet同层去重与递增条件的双重保障
  • 【python】三元图绘制(详细注释)
  • 春秋云镜 Certify Writeup
  • 光耦电路学习,光耦输入并联电阻、并联电容,光耦输出滤波电路