首页 > 其他分享 >leetcode 动态规划 (基础版)打家劫舍

leetcode 动态规划 (基础版)打家劫舍

时间:2024-06-20 13:58:46浏览次数:10  
标签:动态 偷窃 nums max 最优 打家劫舍 leetcode dp size

题意:

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

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

题解:

状态转移:dp[i]=max(dp[i-1],dp[i-2]+value[i]);

int rob(vector<int>& nums) {
        if(nums.size()==1){
            return nums[0];
        }else if(nums.size()==2){
            return max(nums[0],nums[1]);
        }
        vector<int>dp(nums.size()+1);
        dp[0]=nums[0];
        dp[1]=max(nums[0],nums[1]);
        for(int i=2;i<nums.size();i++){
            dp[i]=max(dp[i-2]+nums[i],dp[i-1]);
        }
        return dp[nums.size()-1];
    }

题后反思:

动态规划和贪心是反着的:

贪心:根据一个原则从无到有,按当前最优,不断生成结果,达到全局最优。

动态规划:在已有结果中,按小局部最优,从已有结果中留下最优结果,达到全局最优。

标签:动态,偷窃,nums,max,最优,打家劫舍,leetcode,dp,size
From: https://blog.csdn.net/zaqjkl/article/details/139807504

相关文章

  • leetcode 动态规划(基础版)删除并获得点数
    题目:给你一个整数数组  ,你可以对它进行一些操作。nums每次操作中,选择任意一个  ,删除它并获得  的点数。之后,你必须删除 所有 等于  和  的元素。nums[i]nums[i]nums[i]-1nums[i]+1开始你拥有 个点数。返回你能通过这些操作获得的最大点数。0题解:要会理解......
  • VBA学习(12):制作动态模糊匹配的下拉菜单
    今天就再给大家分享一下,如何使用VBA制作更好用的动态模糊匹配下拉菜单。完成后的效果演示如下:如上图所示,点击A列单元格,Excel会自动跳出一个文本输入框和一个列表框。当在文本框中输入数据时,列表框的数据会随之动态更新。1丨制作步骤选中目标工作表,在【开发工具】→【插......
  • 云动态摘要 2024-06-20
    给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。最新优惠与活动[低至1折]腾讯混元大模型产品特惠腾讯云 2024-06-06腾讯混元大模型产品特惠,新用户1折起!云服务器ECS试用产品续用阿里云 2024-04-14云服务器ECS试用产品续用最新产品更新[功能优化]费用中心-......
  • leetcode225用队列实现栈
    本文主要讲解用队列实现栈的要点与细节,按照步骤思考更方便理解,同类型用栈实现队列c++与java代码如下,末尾请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:voidpush(intx) 将元素x压入栈顶。intp......
  • 【仿真建模-anylogic】动态生成辊道网络
    Author:赵志乾Date:2024-06-18Declaration:AllRightReserved!!!1.常用函数     辊道网络中可以包含多种元素,在动态生成辊道网络中,最常用到的是Conveyor元素和ConveyorCustomStation元素。本次示例仅说明Conveyor元素的动态生成,其内部对应的Java类为ConveyorPath;每个......
  • 12.1.k8s中的pod数据持久化-pv与pvc资源及动态存储StorageClass
    目录一、pc与pvc的概念二、pvc与pv初体验1,准别nfs环境1.1.所有节点安装nfs工具1.2.harbor节点编辑nfs配置文件 2,创建3个pv资源3,harbor节点创建pv对应的nfs存储路径 4,创建pvc关联pv5,创建pod引入pvc6,编辑index访问文件到harbor存储目录下7,浏览器访问测试三、Storag......
  • Fragment的动态创建
    Fragment的动态创建动态创建不同于静态创建,不需要写固定的xml文件,但是依然要有一个xml文件来当容器。1.我们需要使用<androidx.fragment.app.FragmentContainerView/><?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/re......
  • 路由器动态路由的配置方法
    路由器动态路由的配置方法 二、实验原理:RIP协议是应用较早、适用于小型同类网络的内部网关协议,每台具有RIP功能的路由器默认每隔30秒利用UDP520端口向与它相邻的路由器广播(RIPv1)或组播(RIPv2)路由更新信息。使用跳数(HopCount)作为度量值,最大跳数为15跳。OSPF协议用链路状态来......
  • Leetcode Hot100之双指针
    1.移动零题目描述给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。解题思路双指针遍历一遍即可解决:我们定义了两个指针i和j,它们都初始化为0。然后,我们开始遍历列表......
  • 动态开点线段树
    众所周知,线段树要开\(4\)倍空间,但是这样会浪费许多空间,所以动态开点线段树就诞生了。动态开点线段树适用于\(n\)比较大的情况,它没有优化时间复杂度,优化的是空间复杂度。具体的,我们不再用\(p\times2\)和\(p\times2+1\)作为\(p\)的左右儿子了,而用两个数组\(ls_{p}\)......