当前位置: 首页 > 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");
}

http://www.dtcms.com/a/183520.html

相关文章:

  • 深入浅出 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章深度解析:参考数据与主数据管理的核心要义与实践指南
  • 挪度半身复苏小安妮模型QCPR成人半身急救心肺复苏模拟人
  • 使用python脚本连接SQL Server数据库导出表结构
  • “AI+城市治理”智能化解决方案
  • Profinet转CanOpen协议转换网关,破解工业设备“语言障碍”
  • 计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 08.阴影
  • Vue.js框架的优缺点
  • 【免费工具】图吧工具箱2025.02正式版
  • Discriminative and domain invariant subspace alignment for visual tasks
  • GD32H7复位后程序调用函数时间增加
  • 第八周作业