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

动态规划-LCR 089.打家劫舍-力扣(LeetCode)

一、题目解析

结合示例1,我们能得知对于小偷而言不能连续偷相连的房间,且需要保证偷窃的金额最高。

二、算法解析

1.状态表示

我们想知道到最后一个房子时所偷窃的最高金额,所以dp[i]表示在i位置时,所偷到的最大价值。

但我们也可以知道在最后一个房子时,是可以选择是否偷窃的,所以根据这个又能细化状态。

f[i]表示:到达i位置时,偷取最后一个房子,此时的最大金额

g[i]表示:到达i位置时,不偷最后一个房子,此时的最大金额

2.状态转移方程

省流:f[i] = nums[i]+g[i-1]

           g[i] = max(f[i-1],g[i-1])

3.初始化

f[0]=nums[0],g[0]=0

4.填表顺序

从左往右填表并且两个表一起填写

5.返回值

我们需要知道到最后位置的最大金额,所以return max(f[i-1],g[i-1])

先跟着思考一番,在自己动手写代码,链接:LCR 089. 打家劫舍 - 力扣(LeetCode) 

三、代码示例

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

 

 

看到最后,如果对您有所帮助还请点赞、收藏、关注,点点关注不迷路,我们下期再见! 

 

 

http://www.xdnf.cn/news/7418.html

相关文章:

  • 国产化替代对金融行业有哪些影响?如何应对?
  • 创业与产品设计中的“三个一”法则
  • 基于正点原子阿波罗F429开发板的LWIP应用(1)——网络ping通
  • 前端测试策略:单元测试到 E2E 测试
  • ASIC和FPGA,到底应该选择哪个?
  • C# NX二次开发-求体、面的最小包容圆柱
  • 使用 nvm 管理 Node.js 和 npm 版本
  • Scala:size 和 length 的区别
  • 深入浅出IIC协议 -- 第二篇:FPGA数字接口设计方法论
  • IEEE Communications Magazine 2025年1-3月论文速览
  • 理解PostgreSQL查询执行计划(三)--复杂操作篇
  • TB开拓者策略交易信号闪烁根因及解决方法
  • flatMap():map + flat 的组合,简化 JavaScript 数组处理逻辑
  • ARMv7的NVIC中断优先级
  • MYSQL8.0常用窗口函数
  • Qt Widgets模块功能详细说明,基本控件:QCheckBox(三)
  • winrar 工具测试 下载 与安装
  • 计算机网络 第三章:运输层(一)
  • mcp 学习第二篇
  • Python在自动驾驶数据清洗中的应用
  • Java后端面试八股文大全(2025最新版)
  • 5月19日复盘-YOLOV4
  • 采用CDN技术时域名解析流程
  • Java-List集合类全面解析
  • DAY 30 模块和库的导入
  • 扫描网络内所有设备的IP地址
  • 专题讨论3:基于图的基本原理实现走迷宫问题
  • (二十二)Java File类与IO流全面解析
  • 第 1 章:数字 I/O 与串口通信(GPIO UART)
  • LeetCode 1306. 跳跃游戏 III(中等)