首页 > 其他分享 >Day 28 动态规划part01| LeetCode 509.斐波那契数,70.爬楼梯,746.使用最小花费爬楼梯

Day 28 动态规划part01| LeetCode 509.斐波那契数,70.爬楼梯,746.使用最小花费爬楼梯

时间:2024-10-07 17:21:51浏览次数:6  
标签:契数 爬楼梯 746 int 斐波 -- cost dp

理论基础

  • 包含题目类别:基础类(斐波那契、爬楼梯)、背包问题、打家劫舍、股票问题、子序列问题

  • 解题关键

    1. DP数组定义以及下标的含义
    2. 递推公式
    3. DP数组如何初始化
    4. 遍历顺序
    5. 打印DP数组

509.斐波那契数

509. 斐波那契数

class Solution {
    public int fib(int n) {

        if(n<=1) return n;

        //dp数组:dp[i]--第i个斐波那契数数值
        int []dp=new int[n+1];

        //递推公式-- dp[i]=dp[i-1]+dp[i-2];


        //dp数值初始化-- dp[0]=1,dp[1]=1

        dp[0]=0;
        dp[1]=1;
        //确定遍历顺序-- 从前向后

        for(int i=2;i<=n;i++)
        {
            dp[i]=dp[i-1]+dp[i-2];
        }

        //打印dp数组

    return dp[n];

    }
}

70.爬楼梯

70. 爬楼梯

class Solution {
    public int climbStairs(int n) {

           if(n==1) return 1;
           if(n==2) return 2;
            //dp数组:dp[i]--第i层有几种爬法

            int []dp=new int[n+1];
            //递推公式--dp[i]=dp[i-1]+dp[i-2];


            //dp数值初始化--
            dp[1]=1;
            dp[2]=2;

            //确定遍历顺序--
            for(int i=3;i<n+1;i++)
            {
                dp[i]=dp[i-1]+dp[i-2];
            }


            //打印dp数组

        return dp[n];

        }
    
}

746.使用最小花费爬楼梯

746. 使用最小花费爬楼梯

class Solution {
     public int minCostClimbingStairs(int[] cost) {


            //dp数组 -- 到达下标i,所需花费为dp[i]
            int []dp=new int[cost.length+1];
            //递推公式-- dp[i]=Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);



            //dp数值初始化--默认从0/1开始 不花费
            dp[0]=0;
            dp[1]=0;

            //确定遍历顺序--

            for(int i=2;i<=cost.length;i++)
            {
                dp[i]=Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
            }

            //打印dp数组

        return dp[cost.length];


        }
}

标签:契数,爬楼梯,746,int,斐波,--,cost,dp
From: https://www.cnblogs.com/FreeDrama/p/18450339

相关文章

  • 一本通 1071:菲波那契数
    【题目描述】菲波那契数列是指这样的数列:数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。【输入】输入一行,包含一个正整数k。(1≤k≤46)【输出】输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小......
  • 信息学奥赛复赛复习11-CSP-J2020-04方格取数-动态规划、斐波那契数列、最优子结构、重
    PDF文档公众号回复关键字:202410041P7074[CSP-J2020]方格取数[题目描述]设有n×m的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。小熊会取走所有经过的方格中......
  • P8808 [蓝桥杯 2022 国 C] 斐波那契数组
    Hello大家好,我是小亦,今天一大早就来更东西了嘿嘿,不知道现在大家有没有回老家的或去玩的,那有没有扎在家的,呜呜呜我就是宅在家的QWQ,唉没办法啊,好那么好不了这些了qwq,今天我来讲的题目是来自蓝桥杯2022年国C题目也就是第三道题,名叫:斐波那契数组,其实这道题呢,嗯比较的难所以呢我也......
  • leetCode--爬楼梯(记录做题过程加深印象)
    首先最广泛的方法为递归,直接上代码:intclimbStairs(intn){if(n==1){return1;}if(n==2){return2;}if(flag[n])returnflag[n];returnflag[n]=climbStairs(n-1)+climbStair......
  • CIV6746 Design and Management of Sewer Systems
    CIV6746DesignandManagementofSewerSystemsIntroduction - CIV6746 Re-assessmentThis module has one component for there-assessment:(i)awritten reportcontainingtwo parts (each 2 partsdescribed below in detail)- a single reportwo......
  • 算法设计与分析(斐波那契数列
    目录斐波那契数列的递归实现斐波那契数列的定义递归实现注意事项小结:斐波那契数列的递归实现在编程中,斐波那契数列是一个非常著名的序列,它通常定义为每个数字(从第3个数字开始)都是前两个数字的和,且前两个数字分别是0和1。斐波那契数列的定义在本实现中,斐波那契数列的定义略有不同,......
  • C++速通LeetCode简单第17题-爬楼梯
    思路要点:将问题转化为求斐波那契数列的第n项,然后迭代。思路分析:最后一次爬的阶数不是1就是2,假设爬n阶的方法数是f(n),假设最后一次爬1阶,那么爬前面的n-1阶的方法数是f(n-1);假设最后一次爬2阶,那么爬前面n-1阶的方法数是f(n-2)。所以可以得到:f(n)=f(n-1)+f(n-2),也就是斐波......
  • 爬楼梯(LeetCode)&冒泡和选择排序
    目录一、爬楼梯(LeetCode)1、题目2、代码二、冒泡排序三、选择排序一、爬楼梯(LeetCode)1、题目2、代码二、冒泡排序三、选择排序......
  • P7469 [NOI Online 2021 提高组] 积木小赛
    题目给定两个字符串,在字符串\(a\)中找子序列,在\(b\)中找一个子串,询问有多少个子序列与子串相等,重复的字符串算一次。思路匹配和去重,想到哈希。匹配,想到双指针。每次枚举将要匹配的\(b\)数组的左端点,双指针匹配\(a\)数组,如果成功,那么将\(b[i,j]\)这一段的哈希值放......
  • 超越常规:斐波那契数列的极速计算技术3
    针对斐波那契数列算法进行详细介绍和优化,从最简单的递归方法到更高效的迭代、缓存、动态规划、公式推导和矩阵解法,最终达到了时间复杂度为O(logn)的快速幂矩阵解法来感受算法的神奇之处,最后可以看到如何实现在输入n=2100000000(21亿)时仅耗时0.02毫秒的最佳效果。一、回顾斐波......