动态规划学习——多状态dp(打家劫舍问题)

news2025/1/12 2:45:10

一,打家劫舍I

题目:

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

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

题目接口:

class Solution {
public:
    int rob(vector<int>& nums) {

    }
};

解题思路及代码:

这个打家劫舍问题便是经典的多状态dp问题。为什么是多状态dp问题呢?

1.首先这道题要我们求得是最大值,并且第i家的最大值其实是由前面的前i-1家推导出来的,所以这个问题可以是一个dp问题。

2.为什么1是个多状态dp问题呢?首先我们知道,我们第i天的最大值是由前面的i-1家推导出来的。但是前面的i-1家里面的每一天其实都有偷与不偷两种状态。所以综上两点我们的这道题目便是一个多状态dp问题了。

解决这种dp问题的第一步便是画出状态转移的图表示,如下:

首先解释一下箭头,箭头的开始表示的是前一家的状态,箭头的结束表示这一家的状态。

所以要变成这一家不偷的状态便有两种情况:1.上一家偷了,这一家我不偷

                                                                     2.上一家没偷,这一家我还是不偷。

今天变成偷的状态:上一家没偷,这一家偷。(上一家偷了,这一家就不能偷了。题目要求)

有了这一个状态转移关系以后,我们便可以开始我们的题目解答了,代码如下:

class Solution {
public:
    int rob(vector<int>& nums) {
        int n = nums.size();

        //定义两个数组分别代表第i家偷了和没偷的最大值,f表示偷了,g表式没偷
        vector<int>f(n);
        auto g = f;

        //初始化
         f[0] = nums[0];//第一家偷了
         g[0] = 0;//第一家没偷
         
         //根据状态转移图填表
         for(int i = 1;i<n;i++)
         {
             f[i] = g[i-1]+nums[i];//上一家没偷,这一家才能偷
             g[i] = max(g[i-1],f[i-1]);//不管上一家偷不偷,这一家都不偷,取前面一家在两种状态下的最大值。
         }

         return max(g[n-1],f[n-1]);//返回每一家都到访后的最大值
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1195188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【科研绘图】MacOS上的LaTeX公式插入工具——LaTeXiT

在Mac上经常用OmniGraffle绘图&#xff0c;但是有个致命缺点是没办法插入LaTeX公式&#xff0c;很头疼。之前有尝试用Pages文稿插入公式&#xff0c;但是调字体和颜色很麻烦。并且&#xff0c;PPT中的公式插入感觉也不太好看。 偶然机会了解到了LaTeXiT这个工具&#xff0c;可…

11月份 四川汽车托运报价已经上线

中国人不骗中国人!! 国庆小长假的高峰期过后 放假综合症的你还没痊愈吧 今天给大家整理了9条最新线路 广州到四川的托运单价便宜到&#x1f4a5; 核算下来不过几毛钱&#x1f4b0; 相比起自驾的漫长和疲惫&#x1f697; 托运不得不说真的很省事 - 赠送保险 很多客户第一次运车 …

上海亚商投顾:沪指缩量震荡 龙字辈个股掀跌停潮

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数全天窄幅震荡&#xff0c;沪指最终微幅收红&#xff0c;深成指、创业板指小幅下跌。煤炭板块集体大涨…

pip无法下载moviepy -无法联网

猜测是无法联网 尝试更新匹配 ——失败 尝试1&#xff1a;从网络下载whl文件——还需要下载相关依赖&#xff0c;过于麻烦 但应该可行 下载地址 https://pypi.tuna.tsinghua.edu.cn/simple/对应的包名/ 可能会出现如下&#xff0c;然后继续挨个找 尝试2&#xff1a;使pip联网…

基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 这个章节来完成并行网关&#xff0c;前端无需修改&#xff0c;直接后端修改就可以了。 1、并行网关后端修…

实在智能入选《2023年中国AI软件市场指南》同年再获Gartner重点推荐

近日&#xff0c;全球权威IT研究与咨询机构Gartner发布2023年《中国AI软件市场指南&#xff08;Market Guide for AI Software, China, October 2023 &#xff09;》报告&#xff0c;实在智能依托自研垂直TARS大模型旗下的产品Intelligence Indeed IDP产品在人工智能技术领域的…

iOS移动应用安全加固:保护您的App免受恶意攻击的重要步骤

目录 iOS移动应用安全加固&#xff1a;保护您的App免受恶意攻击的重要步骤 摘要 引言 一、APP加固的概念 二、APP加固方案的比较 三、保护iOS应用的安全 四、总结 参考资料 摘要 本文介绍了移动应用程序&#xff08;App&#xff09;加固的概念和流程&#xff0c;以及市…

2020年五一杯数学建模A题煤炭价格预测问题解题全过程文档及程序

2020年五一杯数学建模 A题 煤炭价格预测问题 原题再现 煤炭属于大宗商品&#xff0c;煤炭价格既受国家相关部门的监管&#xff0c;又受国内煤炭市场的影响。除此之外&#xff0c;气候变化、出行方式、能源消耗方式、国际煤炭市场等其他因素也会影响煤炭价格。请完成如下问题。…

AI机器人小奥,学习不再填鸭

在这个充满科技魅力的时代&#xff0c;一款专为孩子学习量身打造的AI机器人“小奥”正式与大家见面&#xff01; 它是一款集全球领先的人工智能、语音识别、语义理解、情感陪伴为一体的高科技教育产品&#xff0c;旨在帮助孩子提高学习兴趣、拓宽知识面&#xff0c;以科技创新助…

Windows 安装 Maven

Maven 安装 Maven 下载地址&#xff1a;https://maven.apache.org/download.cgi 下载 apache-maven-3.9.5-bin.zip 到本地解压到 D:\Software\apache-maven-3.9.5 配置阿里云镜像 配置阿里云远程仓库镜像地址&#xff0c;打开配置文件 D:\Software\apache-maven-3.9.5\conf\s…

根据DataFrame指定的列该列中如果有n个不同元素则将其转化为n行显示explode()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 根据DataFrame指定的列 该列中如果有n个不同元素 则将其转化为n行显示 explode() 选择题 以下代码两次输出结果分别为几行&#xff1f; import pandas as pd df pd.DataFrame({种类:[蔬菜,水…

软件工程一些图的画法

软件工程一些图的画法 【一】数据库设计&#xff1a;ER图【1】ER图简介【2】实体之间的关系【3】ER图绘制常见问题【4】ER图转关系模式 【二】流程图【1】流程图的作用【2】流程图中使用的符号【3】三种循环的流程图画法【4】流程图的基本结构【5】流程图常用的形式 【一】数据…

图书网站信息采集

首先&#xff0c;你需要安装Haskell的HTTP库&#xff0c;比如http-conduit。你可以使用cabal包管理器来安装它。 然后&#xff0c;你需要定义一个函数来处理HTTP请求。这个函数需要接受一个URL和一个代理服务器的地址作为参数。 import Network.HTTP.ConduitgetURL :: String…

classification_report分类报告的含义

classification_report分类报告 基础知识混淆矩阵&#xff08;Confusion Matrix&#xff09;TP、TN、FP、FN精度&#xff08;Precision&#xff09;准确率&#xff08;Accuracy&#xff09;召回率&#xff08;Recall&#xff09;F1分数&#xff08;F1-score&#xff09; classi…

springboot全局拦截sql异常

起因:非法用户可通过特定的输入(如输入内容超长)等操作,使后台逻辑发生错误,从而使后台sql语句暴露至前台,进而为sql攻击提供条件 处理流程:经查找com.mysql.cj.jdbc.exceptions的父类为SQLException,在全局异常处理类中增加如下配置,经测试不起作用 ExceptionHandler(SQLExce…

【计算机网络笔记】Internet网络的网络层——IP协议之IP数据报的结构

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

使用Redis实现热搜功能

Redis热搜 原理数据类型redis操作简单实现 实操封装方法执行方法最后使用springboot的定时任务对热搜榜单进行维护 原理 使用redis实现热搜的原理就是维护一个zset集合&#xff0c;然后使用score作为当前搜索词的搜索量&#xff0c;score越高的搜索词就说明该搜索词热度越高。…

OLED透明屏在智慧零售场景的应用

OLED透明屏在智慧零售场景中的应用主要包括以下几个方面&#xff1a; 商品展示&#xff1a;OLED透明屏可以作为商品展示窗口&#xff0c;使得产品可以在玻璃的透明表面上直接呈现展示&#xff0c;同时显示相关的文字和视频广告信息。这种宣传模式可以更加吸引顾客注意力&#…

若依框架前后端分离版,集成数据库版本控制flyway

在admin模块的pom.xml增加依赖 <!-- 数据库版本控制 --><dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId><version>7.15.0</version></dependency>在admin模块下的resources 的配置文…

多因素验证如何让企业邮箱系统登录更安全?

企业邮箱系统作为基础的办公软件之一&#xff0c;既是企业内外沟通的重要工具&#xff0c;也是连接企业多个办公平台的桥梁&#xff0c;往往涉及到客户隐私、业务信息、企业机密等等。为了保护邮箱账户的安全&#xff0c;设置登陆密码无疑是保护账户安全的常用措施之一。然而随…