动态规划---打家劫舍

ops/2024/11/15 6:01:53/

题目:

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警

给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

思路:

动态规划五部曲:

1.确定dp数组及含义

dp数组是一维数组,dp[i]代表考虑下标i(包括i)以内的房屋可以偷窃到的最高金额

2.确定递推公式

决定dp[i]偷不偷取决于下标i-1和i-2的dp数组值。

如果偷下标为i的房间,那么dp[i]=dp[i-2]+nums[i],即找出下标i-2房间以内的房屋可以偷窃到的最高金额,再加上下表为i的房间的金额;

如果不偷下标为i的房间,那么dp[i]=dp[i-1],即只考虑下标i-1以内的房屋可以偷窃的最高金额。

3.dp数组初始化

根据递推公式,for循环的遍历要从下标2开始。那么初始化dp[0],dp[1]

dp[0]=nums[0],dp[1]=max(nums[0],nums[1])

4.确定遍历顺序

根据递推公式需要正序遍历nums数组

5.举例推导dp数组

nums=[1,2,3,1]

dp=[1,2,4,4]

代码:

    public int rob(int[] nums) {if(nums==null||nums.length==0) return 0;if(nums.length==1) return nums[0];int[] dp=new int[nums.length];dp[0]=nums[0];dp[1]=Math.max(dp[0],nums[1]);for(int i=2;i<nums.length;i++){dp[i]=Math.max(dp[i-1],dp[i-2]+nums[i]);}return dp[nums.length-1];}


http://www.ppmy.cn/ops/108106.html

相关文章

防封!数字人直播防封!铭顺科技AI数智人抖音直播防封落地方案!!

数字人直播防不防封&#xff1f; 数字人直播有没有流量&#xff1f; 数字人直播能不能落地&#xff1f; 这是目前所有想入局AI数字人赛道、想用数字人直播、想做数字人项目的老板们最担心、最关心的问题&#xff01;但是&#xff0c;同行友商对此都噤若寒蝉&#xff0c;不敢跟…

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐&#xff1f; 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识&#xff0c;并举出了两个例子&#xff0c;我们再举出两个例子继续说明&…

HBase 源码阅读(四)HBase 关于LSM Tree的实现- MemStore

4. MemStore 接口 Memstore 的函数不能并行的被调用。调用者需要持有读写锁&#xff0c;这个的实现在HStore中 我们放弃对MemStore中的诸多函数进行查看 直接看MemStore的实现类 AbstractMemStoreCompactingMemStoreDefaultMemStore 4. 1 三个实现类的使用场景 1. Abstra…

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样 &#x1f3b5; 方芳《摇太阳》 AutoML&#xff08;自动机器学习&#xff09;是一种使用机…

微信小程序 === 长列表性能优化

目录 怎么做到的&#xff1f; 环境准备 使用开发者工具调试 开始迁移 在真机上预览效果 配置 We 分析 AB 实验 快捷切换入口 如何识别当前页面是否使用 Skyline 滚动容器及其应用场景 长列表 ScrollView 的三种模式 列表模式 自定义模式 嵌套模式 可拖拽容器 对…

国内首个金融领域“AI 换脸”检测标准正式发布

大数据产业创新服务媒体 ——聚焦数据 改变商业 9月6日&#xff0c;《虚假数字人脸检测金融应用技术规范》标准&#xff08;下称《标准》&#xff09;在 2024 Inclusion外滩大会上正式发布。标准规定了金融领域虚假数字人脸检测服务的功能要求、技术要求、性能要求等&#xff…

vue3 前端实现pdf打印预览 printjs

在utils建print.ts文件 interface PrintFunction {extendOptions: Function;getStyle: Function;setDomHeight: Function;toPrint: Function; }const Print function (dom, options?: object): PrintFunction {options options || {};// ts-expect-errorif (!(this instanc…

机器学习引领未来:赋能精准高效的图像识别技术革新

图像识别技术近年来取得了显著进展,深刻地改变了各行各业。机器学习,特别是深度学习的突破,推动了这一领域的技术革新。本文将深入探讨机器学习如何赋能图像识别技术,从基础理论到前沿进展,再到实际应用与挑战展望,为您全面呈现这一领域的最新动态和未来趋势。 1. 引言 …