当前位置:网站首页>70. 爬楼梯进阶版
70. 爬楼梯进阶版
2022-08-09 22:11:00 【empty__barrel】
此题将原题进行了部分修改:
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个…n个台阶。你有多少种不同的方法可以爬到楼顶呢?
dp数组含义:
dp[i]:爬到有i个台阶的楼顶,有dp[i]种方法。
递推公式:
dp[i] += dp[i -j];
初始化:
dp[0] 一定为1,dp[0]是递归中一切数值的基础所在,如果dp[0]是0的话,其他数值都是0了。
遍历顺序:
这是一个完全背包,所以是顺序遍历,通过分析可知这个dp中的序列是排列,所以要注意两个for循环嵌套的顺序
如果求组合数就是外层for循环遍历物品,内层for遍历背包
如果求排列数就是外层for遍历背包,内层for循环遍历物品
把题目进行转换:
一步一个台阶两个台阶等等,然后整个过程就是,每次走多少个台阶然后到楼顶。
可以这样想:可以走的台阶数为一个数组,从数组里面取值(每个元素可重复取)其和为上到楼顶所需要的台阶数。
这时就可以很清楚的知道这是一个完全背包问题。
class Solution {
public:
int climbStairs(int n) {
vector<int> dp(n + 1, 0);
dp[0] = 1;
for (int i = 1; i <= n; i++) {
// 遍历背包
for (int j = 1; j <= m; j++) {
// 遍历物品
if (i - j >= 0) dp[i] += dp[i - j];
}
}
return dp[n];
}
};
代码中m表示可以爬1~m个台阶,代码中把m改成2就是本题70.爬楼梯可以AC的代码了。
边栏推荐
猜你喜欢
leetcode:319. 灯泡开关
leetcode:332. 重新安排行程
HUAWEI CLOUD escorts the whole process of "Wandering Ark" for the first time, creating a popular brand
kubesphere
CV review: softmax code implementation
【实用工具系列】MathCAD入门安装及快速上手使用教程
Tencent continues to wield the "big knife" to reduce costs and increase efficiency, and free catering benefits for outsourced employees have been cut
CV复习:softmax代码实现
少儿编程 电子学会图形化编程等级考试Scratch三级真题解析(判断题)2022年6月
iNFTnews | 迪士尼如何布局Web3
随机推荐
2022/8/9 考试总结
Users should clearly know that quantitative trading is not a simple procedure
如何知道电脑开机记录?
web 面试高频考点 —— 性能优化篇(手写防抖、手写节流、XXS攻击、XSRF攻击)
Qt message mechanism and events
Vmware中安装win7虚拟机以及相关简单知识
高数_复习_第4章:向量代数和空间解析几何
少儿编程 电子学会图形化编程等级考试Scratch三级真题解析(判断题)2022年6月
异常处理(try,catch,finally)
【Burning】It's time to show your true strength!Understand the technical highlights of the 2022 Huawei Developer Competition in one article
Leetcode 236. 二叉树的最近公共祖先
Chapter 15 HMM模型
Analyses the development status quo of stock trading
Leetcode 98. 验证二叉搜索树
用户要清晰知道,量化交易并非简单的程序
【Leetcode】2104. Sum of Subarray Ranges
JuiceFS 在多云存储架构中的应用 | 深势科技分享
ArrayList 和 LinkedList 区别
33. Fabric通道、组织、节点、权限间关系
three.js镂空圆球拖拽变形js特效