当前位置: 首页 > news >正文

记录学习的第十九天

  现在这篇是记录一下4.1的学习。今天还没开始。

这篇是关于简单的动态规划的题目,思路比较清晰类似。

 

  在这里先说一下有关动态规划的四个步骤:

1.确定子问题

2.确定dp数组的递推关系(dp数组也叫子问题数组)

3.确定求解的计算顺序

4.空间优化(初学者可以不掌握,本篇中没有涉及)

 

  接下来上第一道题,由打家劫舍引入门。

   那么,首先按步骤来,第一步:确定子问题。

这道题的大问题是一夜之间偷n间房子的最大金额。

   而现在要明确子问题,子问题是什么?我们要求的问题是可以通过子问题来得到的。

所以这道题中我们可以把范围缩小,先求k个房子的最大金额。而当k=n时就是题目所求内容了。

   现在开始求解第二步:确定子问题的递推关系。

在本题中,还是比较容易找到的。dp[k]就是dp[k-1](不打劫第k间房子)与dp[k-2]+nums[k-1](打劫第k间房子)的最大值了。

  就到了第三步:确定dp数组的计算顺序。

还是能够清晰知道是从左往右的,先计算打劫较小的房子,一直到n个房子为止。

  至此,就可以写出代码了。

 

  接下来是一道打家劫舍的拓展题。

   就是由一排过来变成了房子是围着的而已。那么可以拆开来求解(打了第一间就不打最后一间或者不打第一间),就变成单排求解,和上面一道题一样了。

 

  最后还有一道类似的题目,学会上面两道题目之后,这道题就差不多了。

   不过这里是从问题0开始的,和上面的顺序是相反的,知道这个思路之后就很好做了。

 

http://www.dtcms.com/a/106519.html

相关文章:

  • JAVA学习小计之IO流02--字符流篇
  • TypeScript装饰器与元编程
  • 美军用通信技术调研
  • C++ 新特性 | C++ 11 | std::move
  • maven如何使用
  • 《UNIX网络编程卷1:套接字联网API》第4章 基本TCP套接字编程
  • 一周掌握Flutter开发--9. 与原生交互(下)
  • 04-08核心配置和映射配置文件解析
  • 14.主从Reactor+线程池模式,Connection对象引用计数的深入分析
  • 【UE5】发现意外的文件尾解决方法
  • 国产系统服务器识别不到stata盘
  • C语言--统计输入字符串中的单词个数
  • 前端新增数据,但数据库里没有新增的数据
  • k8s 污点常用操作
  • Qt进阶开发:QFileSystemModel的使用
  • Rust 开发提效神器:lombok-macros 宏库
  • 吴恩达深度学习复盘(5)神经网络的前向传播TesorFlow与NumPy实现比对
  • 【高并发内存池】第八弹---脱离new的定长内存池与多线程malloc测试
  • 【redis】redis实现红锁
  • 关于文化和软件技术的传承
  • resttemplate设置params
  • C++与Python初始化最小和最大整数
  • 多传感器融合SLAM中如何检验编写的Factor是否有效
  • 黑马点评。1 导入黑马点评项目
  • C++ 中的 **CRTP
  • 鸿蒙定位开发服务
  • 论文浅尝 | Interactive-KBQA:基于大语言模型的多轮交互KBQA(ACL2024)
  • HTML 媒体(Media)学习笔记
  • 使用Apache HttpClient编写Java爬虫
  • Python | 第十一章 | 模块和包 | 面向对象编程_基础部分