LeetCode 爬楼梯(动态规划题解)

题目链接:

https://leetcode.cn/problems/climbing-stairs/

资源:

关于动态规划和贪心算法的区别,动态规划的常见题型,我总结了一些(还有文档哦),大家可移步至:动态规划基础知识点(包含文档)-CSDN博客

AC代码:

//动态规划基础题
//dp,i,公式,初始化,遍历顺序,打印

//关键:想清楚为啥给出2,3这两种情况的答案
//再加上自己分析出来n=4时,方案数为:5 = 2 + 3;
//                   5            8   5   3
//答案问的是方案数,就考虑方案数的关系

/*!!!!为什么该题只和前两阶有关系:因为它只能迈1阶或者2阶,第4阶只能从2阶和3阶迈上来!!!!!*/

int climbStairs(int n) 
{
    if (n == 1)
        return 1;

    //dp:存放到达第i层的方案总数
    int dp[46] = { 0 }, i;

    /*法一:从起点开始初始化*/
    dp[0] = 1;/*注意是1,不是0,因为dp[2] = 2,要统一公式*/
    dp[1] = 1;
    for (i = 2; i <= n; i++)
    {
        dp[i] = dp[i-1] + dp[i-2];
    }  、
    /*法二:不管起点,直接初始化1,2,因为题目n的数据从1开始dp[0]是没有定义的*/
    return dp[n];
}

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脑子不好的小菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值