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

动态规划-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]);}
};

 

 

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

 

 

相关文章:

  • 多类别异常检测新SOTA-MVMCAD
  • 如何通过生成式人工智能认证(GAI认证)提升自己的技能水平?
  • 中小实验室质检LIMS 系统选型 从成本管控到竞争力升级的黄金法则
  • Mybatis操作数据库(2)
  • [学习]POSIX消息队列的原理与案例分析(完整示例代码)
  • 基于DolphinScheduler抽取通用EventBus组件:支持延迟与事件驱动
  • Ubuntu开机自启服务
  • 关于systemverilog中在task中使用force语句的注意事项
  • 第三十八节:视频处理-视频保存
  • 线程调度与单例模式:wait、notify与懒汉模式解析
  • 麦克风与扬声器的关键区别 [特殊字符]
  • SpringBoot+ELK 搭建日志监控平台
  • 前端 vue + element-ui 框架从 0 - 1 搭建
  • Spring Cloud Seata 快速入门及生产实战指南
  • antd树结构
  • 阻塞队列:线程安全与生产者消费者模型解析
  • OSPF路由撤销及优化
  • solana钱包管理模块
  • 自动化测试的框架有哪些?原理是什么?
  • 判断三方库是64位还是32位
  • 广东茂名信宜出现龙卷,一家具厂铁皮房受损
  • 菲律宾华人“钢铁大王”撕票案两主谋落网,部分赎金已被提取
  • 人猴“攻防战”:难守的庄稼与扩张的猴群,部分村民选择放牧搬家
  • 海口警方通报“司机驾车拖行虐猫”:系意外,未发现故意虐猫行为
  • “十五五”规划编制工作开展网络征求意见活动
  • 视频丨习近平在河南洛阳市考察调研