[LeetCode198 House Robber]数组中的动态规划求最值问题

动态规划专题之最值问题 问题描述 现有 n 块“多米诺骨牌” s1, s2, · · · , sn 水平放成一排,每块骨牌 si 包含左右两个部分,每个部分赋予一个非负整数值,如下图所示为包含 6块骨牌的序列。骨牌可做 180 度旋转,使得原来在左边的值变到右边,而原来在右边的值移到左边,假设不论 si 如何旋转, L[i] 总是存储 si 左边的值, R[i]总是存储 si 右边的值, W [i] 用于存储 si 的状... 阅读详情

一、题目解析

给定一个数组,数组中的每一位相当于一座房子,数组值代表偷窃该房子所能得到的财富值。现在一个小偷要对这么多房子进行偷窃,规定偷窃连续的两个房子将会触发报警系统,算法需要输出小偷在这条街上偷窃所能得到的最大财富值。

二、思路解析

用动态规划的思路解决这个问题非常清晰,首先确定该问题的子问题。以n代表这条街上的房子数,由于无法偷窃相邻的两个房子,所以子问题即为money(n-2)+money(n)和money(n-1),money[i]为偷窃到第i座房子所能得到的最大值,我们只需确定money数组中的每一个值然后在该数组中输出最大值即可。

三、代码实现

class Solution {
public:
    int rob(vector<int>& nums) {
        int len = nums.size();
        int result = 0;
        vector<int> money(len,0);
        if(len == 0 ) return 0;
        if(len == 1 ) return nums[0];
        if(len == 2) return max(nums[0],nums[1]);
        if(len == 3) return max(nums[1],nums[0] + nums[2]);
        if(len > 3) {
            money[0] = nums[0];
            money[1] = nums[1];
            money[2] = money[0] + nums[2];
            for(int i = 3; i < len;i++) {
                money[i] = nums[i] + max(money[i - 2],money[i - 3]);
            }
            for(int i = 0; i < len;i++) {
                if(result <= money[i]) result = money[i];
            }
        }
       return result;
    }
};

动态规划求表达式最值 详细的代码描述,可以很短的时间内了解编码的思想。 立即下载

相关推荐

动态规划求表达式最大值

实现了对一个表达式添加括号使得表达式的值达到最大

动态规划,入门

memo在自顶向下的方法中保存了子问题的解,避免重复计算。dp table在自底向上的方法中通过逐步计算填充得到问题的解。尽管它们的使用方式不同,但它们的本质都是用于存储子问题的结果,因此它们本质上是相同的工具,可以互换称为dp table。dp[0] = 0for i in range(len(dp)): #这里i代表这个amount, dp[i]代表i这个amount得到的答案continue解法二,自底向下,迭代解决。

小泽爱刷题的博客 1134

Apollo control模块横向控制原理及核心代码逐行解析

看完这篇文章,你会对apollo横向控制有一个整体的概念

weixin_39199083的博客 2万+

动态规划(一)

前言:动态规划(DP)是运筹学的一个分支,是将决策不断最优化的求解过程。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解中得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到的子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。...

Mike_honor的博客 585

深入分析大众点评 Ajax 接口:直接请求 JSON 数据高效获取评论

大众点评网站采用前后端分离架构,通过Ajax接口动态加载数据。按F12打开开发者工具,切换到Network(网络)面板。实际环境中,我们需要使用Python重现这一加密逻辑。查看请求响应,寻找包含评论数据的JSON接口。参数是大众点评的反爬机制核心,需要特别处理。:尊重网站的robots.txt文件规定。:仅将数据用于合法合规的研究和分析目的。:不侵犯大众点评的商业秘密和知识产权。打开大众点评网站,进入任意商户页面。:对采集到的用户信息进行脱敏处理。:避免对目标网站造成过大负担。

Z_suger7的博客 1583

FT2232HL JTAG下载器硬件设计指南:从引脚配置到电平转换实战

本文详细解析了FT2232HL JTAG下载器的硬件设计要点,包括引脚配置、电平转换电路设计及EEPROM配置技巧。通过实战案例展示如何利用FT2232HL实现高速JTAG通信,解决电平不匹配等常见问题,提升嵌入式开发效率。特别适合需要灵活JTAG接口的硬件工程师参考。

weixin_29194693的博客 255

动态规划只能用来求最值吗?

点击关注上方“五分钟学算法”,设为“置顶或星标”,第一时间送达干货。转自面向大象编程你有没有过这样的经历?有的题目用动态规划方法去套的话,很快就能想出解法,但是如果没有提示,你是死活想不...

程序员吴师兄的博客 1131

Comsol 弧形声学换能器声聚焦仿真

1. 弧度和曲率半径:弧形声学换能器的形状和曲率半径对声聚焦效果有重要影响。通常,较小的曲率半径和较大的弧度可以实现更强的声聚焦效果。弧形声学换能器声聚焦是指将声波能量集中在弧形声学换能器的特定区域内,以实现更强的声场强度和分辨率。4. 数值仿真和优化:使用声学仿真软件进行数值仿真可以帮助设计和优化弧形声学换能器的声聚焦效果。通过调整几何参数、材料特性和激励信号等参数,可以模拟和优化声聚焦效果。2. 激励信号:通过调整激励信号的频率和幅值,可以实现声波在弧形声学换能器中的聚焦效果。

声学黑洞仿真工作室 1617

动态规划总结(一)---数组求子序列最值问题

经过一段时间的刷题总结,发现动态规划的一些问题的思路是有规律可循的。 本次总结的题型是: 给定一个数组(或者其他线性容器),求符合某一要求的子序列的最值。 这种题型的规律在于,现在的状态总是建立在前一个符合要求的最值基础上,用公式可以表示为: F(i) = F(j) + G(i) , 其中,j<i<len(A). F(i)总是表示小于i的子区间中最符合题目要求的子序列,G(i)...

Allen_Xu17 638

智能车‘大脑’的诞生:揭秘电磁循迹代码背后的控制论与系统思维

本文深入探讨智能车电磁循迹系统的核心架构与控制原理,揭示了其作为精密闭环系统如何通过模块化设计、信号处理、PID控制算法及电机驱动实现自主导航。重点分析了电磁信号采集与处理流程框架,为开发者提供从理论到实践的全面指南。

arduino9maker的博客 531

petalinux i2c的配置

1.硬件平台配置 1.内核配置 cd petalinux-config -c kernel -> Device Drivers -> I2C support -> i2C Hardware Bus support -> Xilinx I2C Controller Pressing 启用CONFIG_I2C_XILINX=y 2.修改用户设备树 cd cd project-spec/meta-user/recipes-bsp/device-tree/files/ i2c2:

u013403954的博客 4313

【LeetCode】198. House Robber

198. House Robber Description: You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing ea...

Microstrong 3702

【AI赋能】Sora + CapCut 打造爆款短视频:从脚本到发布的自动化工作流

本文详细介绍了如何利用Sora、Grok和CapCut等AI工具构建自动化短视频生产工作流。通过结构化Prompt生成专业脚本,借助Sora将文字转化为高质量视频素材,并利用CapCut进行高效剪辑与合成,实现从创意到发布的十倍效率提升,助力个人及团队打造爆款内容。

g8f9d0s1a2的博客 496

House Robber(房屋偷盗问题):动态规划解法

文章目录[LeetCode198. House Robber](https://leetcode.com/problems/house-robber/)1.定义状态最后一步子问题状态2.转移方程3.初始值和边界条件4.计算顺序5.代码6复杂度分析7.优化代码 LeetCode198. House Robber 序列型动态规划问题,仍然按照一般的分析方法进行分析 1.定义状态 最后一步 先明确...

超级无敌小胖头 1487

Cadence16.6安装教程

如需安装所需的软件,请到文章末尾处查看 安装步骤: 安装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,安装包路径也不要有中文。 试装系统:win10 64bit 1.解压安装包(共5个压缩包,每个都要解压) 2.以管理员身份运行安装程序。 3.选择License Manager。 4.点击NEXT。 5.选择I accept,然后点击NEXT。 6.选择License Manage...

谢谢关注“小鱼教你模数电”,各平台同号 8万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

leetcode 198.House Robber-打家劫舍|动态规划

You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent house

hdtopku 2832

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LeetCode-198 & 213:House Robber (房屋抢劫)

每个房间里都有不同数量的财物,给出能抢劫的最大财物数。不能同时对相邻的房间进行抢劫。

大树先生的博客 2232

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

LeetCode 198. House Robber 题解

本题是动态规划的经典入门问题。状态定义:前 i 个房屋的最大金额状态转移:偷或不偷当前房屋空间优化:只需要两个变量通过本题可以深入理解动态规划的基本思想。

cannonjinx的博客 4088

House Robber Leetcode 198,213,337

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

qq_36835991的博客 420

LeetCode-198. House Robber [C++][Java]

You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security systems connected andit will automatica

贫道绝缘子的博客 371

Leetcode House Robber python 浅谈动态规划

Leetcode 198题 House Robber You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of ...

润泽的博客 225

Leetcode_198_House Robber

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.youkuaiyun.com/pistolove/article/details/47680663 You are a professional robber planning to rob houses along a street. Each house has a certain amount of money

皮斯特劳沃 3811

Leetcode198. House Robber

一个数组,每个元素代表商店的存款,一个小偷晚上去偷商店,问最多能偷多少钱。有一个前提,不能偷相邻的商店,不然警报会响起。

magic_jiayu的博客 302

LeetCode - 198. House Robber & 213. House Robber II - C++

昨天腾讯笔试题:n个整数的圆环中取m个数,不能取相邻的,求可取出的最大和,同学提醒是LeetCode#213相似题目。 #213是#198的变式,所以又做了一下198. House Robber // dp数组 class Solution { public: int rob(vector&lt;int&gt;&amp; nums) { int length = n...

L_bic的博客 391
上一篇: 【LeetCode 300 Longest Increasing Subsequence】最长递增子序列
下一篇: 【LeetCode515 Find Largest Value in Each Tree Row】二叉树每行的最大值
codekiller_
博客等级 码龄12年 11粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值