当前位置:网站首页>动态规划--简单题型之爬楼梯
动态规划--简单题型之爬楼梯
2022-07-28 05:26:00 【步步高升b】
爬楼梯
假设你需要爬 n 个台阶才能到达楼顶,每次你可以爬 1 或 2 个台阶,那么有多少种不同的方法才能爬到楼顶呢 ?
分析
定义数组 dp[i] ,表示爬到第i层楼有 dp[i] 种方法。
数组dp[i] 从两个方向推导出来的:
dp[i-1],上i-1层楼梯有dp[i-1]种方法,下一步上一个台阶就是dp[i];
dp[i-2], 上i-2层楼梯有dp[i-2]种方法,下一步上两个台阶就是dp[i];
即dp[i] = dp[i-1]+dp[i-2]
代码实现
#include<iostream>
using namespace std;
class Solution {
public:
int ClimbStairs(int n) {
int dp[3];
dp[1] = 1;
dp[2] = 2;
if (n < 3) return dp[n];
for (int i = 3; i <= n; i++) {
int sum = dp[1] + dp[2];
dp[1] = dp[2];
dp[2] = sum;
}
return dp[2];
}
};
int main() {
Solution Q;
int n;
cin>>n;
cout<<Q.ClimbStairs(n);
}
边栏推荐
猜你喜欢
随机推荐
【C语言】动态内存管理
qt绘画事件-设置背景图片
小程序:wsx脚本
scrapy 命令
QT parse string into JSON data and parse
2022年七夕礼物推荐!好看便宜又实用的礼物推荐
刷题记录----二叉树的层序遍历
MySQL delete tables without deleting databases
Treasure plan TPC system development DAPP construction
Paper artifact vs code + latex + latex workshop
JSON笔记
【自我救赎的开始】
qt解决每次修改完ui文件都要重新构建的问题
气传导蓝牙耳机什么牌子好、气传导耳机最好的品牌推荐
【学习笔记】vim 编辑器
刷题记录----二叉树
NPM yarn related operations
C语言的文件操作
根据IP地址和子网掩码求主机所在的网络地址和广播地址
QT solves the problem of rebuilding UI files every time they are modified









