动态规划专练(一)

这篇具有很好参考价值的文章主要介绍了动态规划专练(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


动态规划专练(一)

前言


此篇为动态规划的初阶篇,所以比较简单,适合刚入门的新手学,如果你已经入门了,就无需看这了,以后我会持续更新关于动态规划的文章的

一、斐波那契数

1.题目介绍

509. 斐波那契数
动态规划专练(一)

2.思路

1.确定初始状态

f[0]=0,f[1]=1;

  1. 确定状态

我们所需要求的是f[n]

2.确定状态转移方程

f[n]是由从f[n-1]和f[n-2]转换来的动态规划专练(一)

3.代码

int fib(int n){
   int f[35];
   f[0]=0;
   f[1]=1;
   for(int i=2;i<=n;i++)
   {
       f[i]=f[i-1]+f[i-2];
   }
   return f[n];
}

二、爬楼梯

1.题目介绍

爬楼梯
动态规划专练(一)

2.思路

其实与上面的斐波那契数的题是差不多的,就是需要改变以下思维
设f[n]为到达n层所有的方法
1.确定初始状态

从0层到一层,只能跨一步到第一层,即f[1]=1,从0层到第二层可以跨两个一步或者直接跨2步到第二层,即f[2]=2;

  1. 确定状态

我们所需要求的是f[n]

2.确定状态转移方程

要想到达f[n],有两种方法可以到达,从f[n-1]向上跨一步或者从f[n-2]向上跨两步,所以到达f[n]的方法是到f[n-1]和到f[n-2]的方法的和
动态规划专练(一)

3.代码

int climbStairs(int n){
        int f[50]={0};
        f[1]=1;
        f[2]=2;
        for(int i=3;i<=n;i++)
        {
            f[i]=f[i-1]+f[i-2];
        }
        return f[n];
}

三、使用最小花费爬楼梯

1.题目介绍

使用最小花费爬楼梯
动态规划专练(一)

2.思路

此题与上题很相似,但此题不是求方法,而是求最低的花费,同样只需要将思维转换一下就行了
设f[n]为到达n层的最低花费
1.确定初始状态

本题说可以从0层和一层开始,但是要想最低花费,肯定从1层开始嘛,所以f[0]=0;
初始在0层,所以f[1]=0;

  1. 确定状态

我们所需要求的是f[n]

2.确定状态转移方程

要想到达f[n]花费最小,有两种方法可以到达,所以有两种花费,比较f[n-1]向上跨一步加上跨一步的花费和从f[n-2]向上跨两步加上跨两步的花费,去最低者,即使f[n]的最低花费
动态规划专练(一)文章来源地址https://www.toymoban.com/news/detail-417239.html

3.代码

class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
     int f[10000]={0};
     f[0]=0;
     f[1]=0;
     int size=cost.size();
     for(int i=2;i<=size;i++)
     {
         f[i]=min(f[i-1]+cost[i-1],f[i-2]+cost[i-2]);
     }
     
    return f[size];
    }
};

到了这里,关于动态规划专练(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言初阶篇】for语句的基本语法和使用规则!

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,前面给大家详细介绍了while语句但是它也是有缺点的,所以我们就有了更好的语法for!    ⛳️ 那么今天我们就介绍一下

    2024年02月14日
    浏览(44)
  • 【C语言初阶篇】scanf和getchar中缓存区的概念!

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,相信大家都多多少少了用过scanf和getchar()语句吧,但是关于缓存区的概念,我相信大多数人都没有听说过吧。    ⛳️ 写

    2024年02月14日
    浏览(46)
  • 【C语言初阶篇】 while 语句的语法和注意事项 (详解版)

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,又是新的一天开始了,今天给大家带来的循环语句的全面讲解!    ⛳️ 历时一天终于给肝出来了,本文详细讲解了wh

    2024年02月14日
    浏览(45)
  • JavaEE 初阶篇-深入了解进程与线程(常见的面试题:进程与线程的区别)

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录         1.0 进程概述         2.0 线程概述         2.1 多线程概述         3.0 常见的面试题:谈谈进程与线程的区别         4.0 Java 实现多线程的常见方法         4.1 实现多线程方法 - 继承

    2024年04月13日
    浏览(45)
  • JavaEE 初阶篇-深入了解单例模式(经典单例模式:饿汉模式、懒汉模式)

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录         1.0 单例模式的概述         2.0 单例模式 - 饿汉式单例         2.1 关于饿汉式单例的线程安全问题         3.0 单例模式 - 懒汉式单例         3.1 关于懒汉式单例的线程安全问题      

    2024年04月15日
    浏览(44)
  • 【初阶C++】前言

    C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了 OOP(object oriented programming:面向对象)思想 ,支持面向对象的程序设计语言应运而生

    2024年02月04日
    浏览(60)
  • JavaEE 初阶篇-深入了解 UDP 通信与 TCP 通信(综合案例:实现 TCP 通信群聊)

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录         1.0 UDP 通信         1.1 DatagramSocket 类         1.2 DatagramPacket 类         1.3 实现 UDP 通信(一发一收)         1.3.1 客户端的开发         1.3.2 服务端的开发         1.4 实

    2024年04月26日
    浏览(41)
  • JavaEE 初阶篇-深入了解多线程安全问题(指令重排序、解决内存可见性与等待通知机制)

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录         1.0 指令重排序概述         1.1 指令重排序主要分为两种类型         1.2 指令重排序所引发的问题         2.0 内存可见性概述         2.1 导致内存可见性问题主要涉及两个方面      

    2024年04月15日
    浏览(45)
  • 《C语言初阶篇》循环语句还没搞懂?这篇文章带你轻松学会循环语句!

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,又是新的一天开始了,今天给大家带来的循环语句的全面讲解!    ⛳️ 历时一天终于给肝出来了,本文详细讲解了wh

    2024年02月15日
    浏览(44)
  • 【C++初阶(一)】学习前言以及命名空间

    💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C++初阶之路⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习排序知识   🔝🔝 对于复杂的问题,规模较大的程序 需要高度的抽象和建模时 C语言不再适合应用于这种场景 于是在1982年 C++创始人 Bjarne Stroustrup 在C语言

    2024年02月11日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包