首页 > 其他分享 >没有小偷比我更专业(打家劫舍)

没有小偷比我更专业(打家劫舍)

时间:2022-09-20 09:44:27浏览次数:56  
标签:专业 nums int max 不取 小偷 打家劫舍 dp

一:写在前面

  动态规划真的很重要,无论大公司小公司都会涉及到。博主最近在秋招,遇到了两个打家劫舍的笔试题 ,或者说是变形题。4399的猜密码,给你一串数字,相邻2个数字不能一起用,让你计算出这串数字能获得的最大和。另外一个小公司的摘苹果,一排苹果树,每颗树上都有一定的苹果,相邻的两棵树不能摘,问你能摘的最多苹果数量是多少?

二:思考过程

 我们以原题打家劫舍为例,来一步一步推导出递推公式。

 

 

 

 

 

1)先定义dp数组并且明确其含义

     数组中的每个数字我们可以选择取或者不取。设取为1,不取为0。可以得出如下的二维数组。

     int dp[n][2]记录每个阶段的状态      dp[i][0]表示第i个物品不偷,当下的最⼤⾦额      dp[i][1]表示第i个物品偷,当下的最⼤⾦额      

2)递推公式

当前状态有两,dp[i][1]表示当前数取,那么当前数取的话能得到的最大值就是在前一个数的不取的基础上(相邻数不能同时取)再加上当前数的值。

  dp[i][1] = dp[i - 1][0] + nums[i];

dp[i][0]表示当前元素不取,能够获得的最大值为:max(前一个数取状态的最大值,前一个数不取状态的最大值)。

  dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1]);

3)完整代码

 1 class Solution { 
 2  public int rob(int[] nums) { 
 3      if (nums.length == 0) return 0; 
 4      int n = nums.length; 
 5      // dp[i][0]表示第i个物品没有选时的最⼤⾦额
 6      // dp[i][1]表示第i个物品选择时的最⼤⾦额
 7      int[][] dp = new int[n][2]; 
 8      dp[0][0] = 0; 
 9      dp[0][1] = nums[0]; 
10      for (int i = 1; i < n; ++i) { 
11      dp[i][0] = Math.max(dp[i-1][0], dp[i-1][1]); 
12      dp[i][1] = dp[i-1][0] + nums[i]; 
13  } 
14      return Math.max(dp[n-1][0], dp[n-1][1]); 
15  } 
16 }

 

标签:专业,nums,int,max,不取,小偷,打家劫舍,dp
From: https://www.cnblogs.com/YXBLOGXYY/p/16709966.html

相关文章

  • LRTimelapse for Mac(专业延时摄影渲染工具)
    lrTimelapse forMac是MACOS上的一款视频编辑软件,lrTimelapsemac是一款配合AdobeLightroom、AdobeCameraRAW和AdobeAfterEffects等程序制作延时摄影的软件。l......
  • Parallels Desktop 18.0.1专业版和商业版的新功能
    ParallelsDesktop18可以在Mac计算机上下载并安装Windows操作系统。在Mac与Windows之间无缝复制和粘贴文本或拖放对象。在Mac虚拟机中跨多个操作系统开发和测试......
  • 性能指标专业术语
    一、性能测试分类:性能测试:使用自动化工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程。包含负载和压力测试负载测试:系统在不同负载下的表现,通过该项测试可以......
  • 2022.9.5关于专业思考上的想法
    有机会在创新创业大赛上进行专业训练,今年先以单片机为主的巡航小车,以后在此基础上进行软件和功能的升级,激光雷达,Android系统控制,还有一个想法,就是自主建立六自由度机器人,作......
  • Peerlist 如何改变现代专业网络
    Peerlist如何改变现代专业网络什么是同行列表?起初,这听起来可能有点像千禧一代,但Peerlist正在为专业网络带来一场革命。您原本打算发送简历以申请公司职位的日子已经......
  • 20221412《信息安全专业导论》第一周学习总结
    以数字代替章节1,计算机硬件和软件如何配合工作;计算系统在早期是如何被创建的?2,其他进制的开方如何进行,需要开方吗;如果在三进制里面除以三是否不会出现无限循环小数?3,P45,实......
  • win11专业版自带的好用的免费工具——windows沙盒
    在win11专业版中有一些好用又免费的工具,下面将介绍其中一款专门创建临时虚拟机以供测试各种软件的工具:Windows沙盒。 如果以前没有使用过该功能,它是默认关闭的,要......
  • 2022-2023-1 20211319蓝宇 《信息安全专业导论》第一周学习总结
    作业信息|这个作业属于哪个课程|2020-2021-1信息安全专业导论(https://edu.cnblogs.com/campus/besti/2020-2021-1fois))||这个作业要求在哪里|[2020-2021-1信息安全专业......
  • Unity — 带有专业提示的 Cinemachine 系统
    Unity—带有专业提示的Cinemachine系统今天,我将解释Unity中电影机系统的使用。正如我在互联网上的几个教程和主题中看到的那样,由于缺乏真实案例,给出的解释还不够。......
  • iZotope RX 10专业音频修复软件
    iZotope RXforMac是一款好用专业的音频修复软件。iZotopeRX专为满足后期制作专业人士的苛刻需求而设计,引入了全新的机器学习处理功能,强大的AudioSuite工具以及高达7.1......