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

用织梦模板做网站鸣蝉智能建站

用织梦模板做网站,鸣蝉智能建站,网站建设套模板下载,phpcms 做好网站怎么保存力扣刷题11——打家劫舍1和2——[线性动态规划] 一、博客声明二、题目描述三、解题思路1、线性动态规划 a、什么是动态规划 2、思路说明 四、解题代码(附注释) 一、博客声明 找工作逃不过刷题,为了更好的督促自己学习以及理解力扣大佬们的解…

力扣刷题11——打家劫舍1和2——[线性动态规划]

  • 一、博客声明
  • 二、题目描述
  • 三、解题思路
    • 1、线性动态规划
      •  a、什么是动态规划
    • 2、思路说明
  • 四、解题代码(附注释)

一、博客声明

  找工作逃不过刷题,为了更好的督促自己学习以及理解力扣大佬们的解题思路,开辟这个系列来记录。代码可能不是自己写的,不求方法最好,只求更多地理解大佬们的解题思路。


二、题目描述

  你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

示例 1

输入:[1,2,3,1]
输出:4
解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。

示例 2

输入:[2,7,9,3,1]
输出:12
解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。偷窃到的最高金额 = 2 + 9 + 1 = 12 。

提示

1 <= nums.length <= 100
0 <= nums[i] <= 400

三、解题思路

1、线性动态规划

 a、什么是动态规划

  动态规划不是一种算法,而是一种思想和解题策略。而要掌握动态规划比较难,小编还没有掌握,还在努力算题中。也不知道该怎么解释。推荐大家去看下面的视频:
  视频1:【动态规划】这可能是最好懂的动态规划入门教程
  视频2:动态规划入门50题

2、思路说明

  换种理解方式,如果有A,B,C,D四个区域,如何保证我穿过四个区域走的路程最长?是不是就是只要保证每个区域都走最长的路,就可以保证四个区域后,我走的路程最长。
  那么打家劫舍这个题目,换个思想,只要保证我到第i家时,不管偷还是不偷,手里积累的钱是两种策略(偷和不偷)中最多的就可以了。如果偷的话,钱就变为偷到前前一家积累的钱加上这家的钱,不偷的话就是偷到前一家积累的钱。比较这两个谁大就可以了。然后就是保存好偷到第i-2家和偷到第i-1家积累的钱,方便对下一家是否偷作为判断依据。
  1、如果数组长度等于1,返回nums[0]
  2、如果数组长度等于2,返回fmax(nums[0], nums[1])
  3、如果数组长度大于2,就需要从第三房子开始判断,偷还是不偷这两种选择,哪种选择能让当前手中积累的钱更多;

在这里插入图片描述

  打家劫舍2只需要考虑偷盗的范围就可以了,代码最后一行变为return fmax(stealRang(nums, 0, numsSize - 2), stealRang(nums, 1, numsSize - 1));。也就是考虑第一家偷的话,最后一家就不能偷,范围就变为从第0家偷到numsSize-2家;如果不偷第一家,范围就变成了从第1家偷到第numsSize-1家;比较这两个谁大就可以了。
 


四、解题代码(附注释)

///偷窃范围,从第start家到第end家。
int stealRang(int* nums, int start, int end){int first = nums[start], second = fmax(first, nums[start+1]);for(int i = start + 2; i <=end; i++){int temp = second;//考虑第i家,偷与不偷,哪个得的钱更多,不偷就还是原来的second值,偷就是前一家+该家金额second = fmax(second, first + nums[i]);first = temp;}return second;
}//该题目为属于线性动态规划题目
int rob(int* nums, int numsSize) {if(numsSize <= 1){//长度为1,返回第一个元素return nums[0];}if(numsSize == 2){//长度为2,返回两个元素中最大的return fmax(nums[0], nums[1]);}return stealRang(nums, 0, numsSize - 1);//返回最大值//return fmax(stealRang(nums, 0, numsSize - 2), stealRang(nums, 1, numsSize - 1)); //打家劫舍2返回这个
}
http://www.yidumall.com/news/101010.html

相关文章:

  • 建设工程规范在哪个网站下载网站快速排名
  • 怎么看网站的建站公司是哪个seo课程多少钱
  • 微信公众号 做不了微网站昆明seo优化
  • 网站建设代码标准百度公司招聘条件
  • 网页设计学什么软件重庆seo推广运营
  • 做红酒网站网推平台
  • 网站建设的价位佛山做seo推广公司
  • html中文网站作业最佳磁力吧ciliba搜索引擎
  • 平板电脑 做网站开发太原seo公司
  • 个性化定制服务的网站品牌推广案例
  • 免费做计算机题的网站厦门seo网站优化
  • 网站怎么做展现量微信搜一搜seo优化
  • 网站建设四不问题拉新推广平台有哪些
  • 知名网站制作公司阿里云建站费用
  • 做网站php和java区别公司官网制作开发
  • 网站为何要屏蔽百度蜘蛛品牌推广的意义
  • 湘潭哪里做网站疫情防控最新信息
  • 南阳网站建设制作百度竞价开户
  • 互联网创业项目零成本郑州seo优化
  • 4k视频素材网站宁波网站推广公司价格
  • 精通网站建设工资多少钱百度推送
  • 网站建设客户调研表志鸿优化网官网
  • 图书馆评估定级关于网站建设标准销售管理
  • 安徽方圆建设有限公司网站想要网站推广版
  • 本地linux做网站seo排名快速刷
  • css样式表的三种样式青岛seo外包公司
  • 政府网站百度云盘网官网
  • dns 解析错误 网站搜索网站排名
  • 长宁区网站建设设计seo工具包
  • 达州市住房和城乡建设局网站太原网站优化