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

E001 爬楼梯方案数 有损坏的楼梯

爬楼梯问题是动态规划的最经典的入门模型。它的核心思想是:要到达当前位置,它可以从以前的那个位置跳(转移)过来。

对于求方案数的经典模型可以总结为:

  1. 定义状态: dp[i] 为到达第 \(i\) 级楼梯的方案数。
  2. 最小子问题:d[0] = 1 ,这里需要注意是从第 \(0\) 阶到第 \(n\) 阶,还是第 \(1\) 阶到第 \(n\) 阶。
  3. 转移方程:\(dp_i=\sum dp[i-step]\) ,要注意在 i - step 的时候防止越界。

基础模型:每次跳 \(1\)\(L\)

这是最通用的形式,当 \(L=2\) 时就是最经典的斐波那契数列

Stair Jump - AtCoder

参考代码

def main():n, L = MII()MOD = 10 ** 9 + 7dp = [0] * (n + 1)dp[0] = 1for i in range(1, n + 1):dp[i] += dp[i - 1]if i - L >= 0:dp[i] += dp[i - L]dp[i] %= MODprint(dp[n])

变体:避开损坏的台阶

如果楼梯有损坏,那么损坏的楼梯就不更新了,直接 continue 。使用一个集合存损坏的楼梯。

Typical Stairs - AtCoder

参考代码

def main():n, m = MII()a = set(II() for _ in range(m))dp = [0] * (n + 1)# 只初始化第0阶,第一阶有可能损坏dp[0] = 1for i in range(1, n + 1):if i not in a:dp[i] = (dp[i - 1] + dp[i - 2]) % MOD  # 这里访问dp[-1]没有影响print(dp[n])
http://www.jsqmd.com/news/545135/

相关文章:

  • 误删Anaconda?三步抢救数据秘籍
  • 目标检测新手必看:如何用Python手写IOU计算函数(附完整代码)
  • OpenRocket火箭仿真完全指南:从入门到精通的专业级飞行模拟技术
  • Mikan Project:动漫管理工具的高效追番解决方案
  • FCEUX:NES模拟器入门指南 - 从新手到调试高手
  • macOS一键部署OpenClaw+nanobot全流程解析
  • 语义分割竞赛必备:5种Loss函数组合效果对比(含Dice+Focal Loss调参指南)
  • 南昌元点智创GEO官方联系方式合作电话官方网站 - 资讯焦点
  • 结语与展望——云原生、Serverless、AIOps的趋势与融合
  • HY-MT1.5-1.8B翻译模型入门指南:零基础搭建翻译服务
  • 避开Isaac Gym仿真那些坑:我的A1四足机器人训练日志与问题排查实录
  • 流程可视化引擎定制指南:从技术实现到业务价值转化
  • 大数据分布式集群
  • 《其他 W3C 活动》
  • 上周刚把这个SSM新闻系统的收尾工作做完,今天刚好有空把整个东西捋一捋分享出来——毕竟当初搭的时候踩了不少坑,能给后来的兄弟姐妹们省点事就省点
  • 智慧生鲜配送:揭秘生鲜配送商城APP功能版块设计
  • 排产优化凭经验,如何从“老师傅”到“智能化”?
  • leetcode 148 排序链表 归并终极形态
  • PySceneDetect终极指南:5分钟掌握智能视频场景检测与分割
  • PyTorch 线程亲和性测试:CUDA 上下文绑定的惊人代价
  • 科研加速器:GLM-4.7-Flash驱动OpenClaw自动整理文献综述
  • OPC UA与Modbus融合:传统工业设备升级的智能桥梁
  • EEGNet实战:用MNE和TensorFlow搞定脑电信号分类(附完整代码)
  • 手把手教你用Docker Compose搭建Odoo开发环境:从零到一键启动
  • 智能文献管理全面指南:从学术研究痛点到高效解决方案
  • 腾讯应用宝空包apk签名
  • NPU vs GPU:为什么你的AI项目需要专用神经网络处理器?
  • 老旧电脑也能流畅运行3D应用?DXVK让Direct3D性能提升的秘密
  • NaViL-9B开源模型实战:媒体内容审核平台图文敏感信息识别案例
  • 如何用stressapptest进行高效内存和磁盘压力测试?实战案例分享