当前位置: 首页 > news >正文

力扣 打家劫舍

题目:

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

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

一、题目理解

给定一个数组nums,其中:

  • nums[i]表示第i间房子的金额

  • 相邻的房子不能同时抢

目标是:
在不触发警报的前提下,抢到最多的钱


二、为什么这是动态规划问题?

这是一个**典型的「选择 + 约束」问题:

  • 每一间房子只有两种选择:

    • 不抢

  • 选择当前房子,会影响后续选择(相邻不能抢)

这种「当前决策依赖之前结果」的结构,非常适合用动态规划(DP)


三、状态定义(关键)

定义:

dp[i] = 抢到第 i 间房子为止,能够获得的最大金额

注意:

  • dp[i] 不是「是否抢第 i 家」

  • 而是:在前 i 家房子中,能拿到的最大值


四、状态转移方程(核心)

考虑第i间房子,有两种情况:

情况 1:不抢第 i 间房

那么最大金额等于:dp[i-1]

情况 2:抢第 i 间房

  • 那第i-1间房一定不能抢

  • 上一个合法状态只能来自i-2

  • 那么最大金额等于:dp[i-2] + nums[i]

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

综合两种情况

dp[i] = max( dp[i-1], dp[i-2] + nums[i] )

这一步是整道题的灵魂


五、初始条件

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

http://www.jsqmd.com/news/88246/

相关文章:

  • Windows系统wfdprov.dll文件损坏 下载修复
  • 基于springboot和vue的协同办公系统 企业员工请假销假系统_c27myh05(java毕业设计项目源码)
  • 【3D图像技术分析与实现】Apple Vision Pro三维成像技术栈深度解析
  • 力扣 完全平方数
  • python3
  • 基于springboot和vue的城市公交管理系统的设计与实现_8f8dpq62(java毕业设计项目源码)
  • shell 判断二进制是否可用
  • Flask安装与第一个应用 路由系统
  • Triton推理服务器部署微调后的模型及测试
  • 树的初阶相关知识(上)
  • 基于springboot和vue的大学生课程排课管理系统设计_2ux3bmwb(java毕业设计项目源码)
  • 基于springboot和vue的扫码解锁共享单车管理系统设计与实现_0455qudf(java毕业设计项目源码)
  • 2025年成都靠谱的抖音代运营品牌哪家好,网站建设/网络公关/网络推广/新闻营销/抖音推广/抖音代运营品牌推荐排行榜 - 品牌推荐师
  • 云数据库服务(如AWS RDS)的优势和考虑因素?
  • 使用NeMo框架微调Llama 3.1 8B Instruct推理模型
  • [论文阅读] AI + 软件工程 | 突破混合与跨语言壁垒!UniCoR让代码检索更智能高效
  • NVIDIA NeMo训练一个具备推理能力的LLM
  • 磁链观测器实战:从仿真到代码的闭环之旅
  • 墨迹蘑菇休闲小游戏Linux演示
  • WHERE和HAVING子句的使用场景有何不同?
  • JVM 之 内存溢出实战【OOM? SOF? 哪些区域会溢出?堆、虚拟机栈、元空间、直接内存溢出时各自的特点?以及什么情况会导致他们溢出?并模拟溢出】
  • 混沌这玩意儿在优化算法里真是万金油。今天咱们拿灰狼算法开刀,手把手给它装10种不同的混沌引擎。先上硬货——代码仓库里直接塞个混沌生成器
  • 基于TMS320F28335芯片的BUCK双闭环PI DSP代码
  • 质量管理QMS软件系统:全模块构建卓越质量生态,数据驱动价值升级——全星质量管理QMS软件系统应用解析
  • AVL树的四种旋转操作用于在插入或删除节点导致二叉树失去平衡
  • vue基于Spring Boot框架学生健康饮食与运动管理系统_c3g9i4f9
  • *SPOOLing 技术(假脱机技术)** - 全称:Simultaneous Peripheral Operations On-Line(外部设备同时联机操作)
  • 超声相控阵全聚焦算法 Comsol超声全矩阵仿真模型(仿真模型可以获得全矩阵数据)
  • 17、Debian系统管理基础与实用工具介绍
  • 量子软件测试:我们准备好了吗?