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

动态规划法:爬楼梯

假如你现在爬楼梯,需要n阶才能到达楼顶,每次可以爬1或2 台阶,你有多少中不同的方法可以爬到楼顶。

例如:

输入:n=2

输出:2     //有两种方法可以到达楼顶,1阶+1阶,2阶。

输入:n=3

输出:3     //有3种方法可以爬到楼顶,1阶+1阶+1阶,1阶+2阶,2阶+1阶。

定义状态:设dp[i]为到达第i个台阶的数量

        状态转移方程:

        要到达第i个台阶,有种方式

1,从第i-1个台阶爬上一个台阶

2,从第i-2个台阶爬上两个台阶

因此:到达第 i 个台阶的方法数量是到第 i-1 个台阶和 i-1 个台阶方法的总和

        dp[i] = dp[i-1] + dp[i-2]        ,i>2

        dp[i] = 1        ,i<2

i = 3开始计算到n

#include<iostream>
using namespace std;
int climbstairs(int n)
{int dp[n+1];for(int i=0;i<=n;i++){if(i<2){dp[i] = 1;}else{dp[i] = dp[i-1]+dp[i-2];}		}return dp[n];
}
int main()
{int n=0;cin>>n;int m=climbstairs(n);cout<<m<<endl;return 0;system("pause");
}

相关文章:

  • 深入浅出 JDBC 与数据库连接池
  • ai agent(智能体)开发 python3基础14:在python 中 总能看到方法里面套方法,那什么时候用这种方式合适呢?
  • 【编译原理】总结
  • Java面向对象
  • Dify+Ollama+Deepseek+BGE-M3来搭建本地知识库实操
  • 单片机系统设计不同开发方式的优缺点(面包板,洞洞板,PCB板)
  • Python爬虫学习路径与实战指南 06
  • Linux--JsonCpp
  • CDGP主观题题库与范例解答
  • 【深度学习-Day 8】让数据说话:Python 可视化双雄 Matplotlib 与 Seaborn 教程
  • Qt开发经验 --- 避坑指南(11)
  • 数孪实战笔记(1)数字孪生的含义、应用及技术体系
  • powerbuilder9.0中文版
  • 23、Next.js:时空传送门——React 19 全栈框架
  • 选对第三方软件测试公司,项目验收成功率提升90%
  • 滑动窗口,438找出字符串中所有字母的异位词
  • Linux:线程同步与互斥
  • JAVA自动装箱拆箱
  • make和makefile的使用,以及写一个简单的进度条程序
  • DAMA第10章深度解析:参考数据与主数据管理的核心要义与实践指南
  • 王毅同印度国家安全顾问多瓦尔通电话
  • 长沙潮宗街内“金丝楠木老屋文旅博物馆”起火:明火已扑灭,无伤亡
  • 沃旭能源因成本上升放弃英国海上风电项目,或损失近40亿元
  • 山东14家城商行中,仅剩枣庄银行年营业收入不足10亿
  • 金地集团:今年前4个月实现销售额109.3亿元,同比下降52.44%
  • 雇来的“妈妈”:为入狱雇主无偿带娃4年,没做好准备说再见