跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C算法

C语言实战:爬楼梯问题中的动态规划核心思想

爬楼梯问题是经典的动态规划入门案例。递归解法存在大量重复计算,时间复杂度呈指数级增长。动态规划通过存储中间结果、定义最优子结构及状态转移方程来优化性能,将时间复杂度降低至线性级别,是解决此类重叠子问题的高效方法。

涅槃凤凰发布于 2026/3/15更新于 2026/9/569 浏览

1. 从生活场景理解爬楼梯问题

想象你面前有一座 10 层的楼梯,每次可以选择跨 1 级或 2 级台阶。这个问题看似简单,却蕴含着重要的算法思想。

让我们从小规模案例入手:

  • 1 级台阶:只有 1 种方法(跨 1 步)
  • 2 级台阶:2 种方法(1+1 或直接跨 2 步)
  • 3 级台阶:3 种方法(1+1+1,1+2,2+1)

你会发现一个规律:到达第 n 级台阶的方法数,等于到达 (n-1) 级和 (n-2) 级方法数的和。这是因为最后一步要么是从 n-1 级跨 1 步,要么是从 n-2 级跨 2 步。

2. 递归解法及其局限性

最直观的解法是递归:

int climbStairs(int n) {
    if (n == 1) return 1;
    if (n == 2) return 2;
    return climbStairs(n-1) + climbStairs(n-2);
}

但这种方法存在严重问题:重复计算。比如计算 climbStairs(5) 时需要计算 climbStairs(3) 和 climbStairs(4),而 climbStairs(3) 又会被重复计算多次。时间复杂度是指数级的 O(2^n),当 n=40 时计算量已经无法接受。

3. 动态规划的核心思想

动态规划通过存储中间结果来避免重复计算,包含三个关键要素:

  1. 最优子结构:问题的最优解包含子问题的最优解
  2. 边界条件:最小子问题的解
  3. 状态转移方程:如何由子问题的解得到更大问题的解

对于爬楼梯问题,状态转移方程为 dp[n] = dp[n-1] + dp[n-2]。

目录

  1. 1. 从生活场景理解爬楼梯问题
  2. 2. 递归解法及其局限性
  3. 3. 动态规划的核心思想

更多推荐文章

查看全部
  • llama.cpp 多 GPU 分布式计算优化实践指南
  • 本地部署与运行大语言模型实战指南
  • 分布式文件系统 HDFS:常用命令、Web 页面与 Java API 编程实践
  • AI 小说生成器:基于大语言模型的长篇小说创作工具
  • Java 面试个人简历模板
  • Cursor 实战:Web 版背单词应用开发全流程
  • Python 属性描述符:原理与 ORM 实战
  • 本地搭建带知识库的 AI 助手:Ollama + Open WebUI
  • C++ std::string 核心用法与底层原理
  • 技术管理者低代码手册:平台分类与价值边界
  • C++ 伸展树与红黑树详解及核心实现
  • Stable Diffusion 整合包安装与实战使用指南
  • 基于 Python Flask + Vue3 的学生信息管理系统设计与实现
  • 冷启动数据与多阶段训练在 DeepSeek 中的作用
  • Seedance 2.0 飞书机器人集成安全合规与零信任加固方案
  • AI 写作发展趋势与展望
  • 前端大文件上传实战:分片、断点续传与拖拽优化
  • Windows 配置 Java 环境:JDK21、Maven3.9.12 及 IDEA2025
  • Cursor 中集成 MCP 服务实战指南
  • 物理模拟频繁失稳?掌握这4种C++稳定性控制模式

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online