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

动态规划-LCR 091.粉刷房子-力扣(LeetCode)

一、题目解析

根据题目信息,我们能知道0是红色,1是蓝色,2是绿色,由此我们就能分析如何粉刷了

二、算法原理

1、状态表示

由于只有一排房子所以此时dp[i]表示:到达i位置时,此时的最小花费,但我们发现有三种颜色要粉刷,所以我们需要多加一维表示粉刷的颜色。

dp[i][0]:表示到达i位置时,最后一个位置为红色,此时的最小花费

dp[i][1]:表示到达i位置时,最后一个位置为蓝色,此时的最小花费

dp[i][2]:表示到达i位置时,最后一个位置为绿色,此时的最小花费

2、状态转移方程

由于分析方式类似所以这里只给出以红色为结尾时的状态转移方程

由于最后一个为红色,所以红色是必选的,其他的则是以绿或蓝结尾的最小值

dp[i][0]=min(dp[i-1][1],dp[i-1][2]) +costs[i][0]

dp[i][1]=min(dp[i-1][0],dp[i-1][2]) +costs[i][1]

dp[i][2]=min(dp[i-1][0],dp[i-1][1]) +costs[i][2]

3、初始化

由于要用到dp[i-1][0/1/2]所以可以直接初始化dp[0][0]dp[0][1]dp[0][2],也可以加三个虚拟节点赋值为0 用于初始化,但需要注意下标的映射关系。

4、填表顺序

从左往右,三个表一起填

5、返回值

由于只粉刷一排房子,所以刷到最后一个房子三个颜色中的最小值返回即可

min(dp[n][0],min(dp[n][1],dp[n][2]))

动手实现代码,才能未来助你一臂之力,链接:LCR 091. 粉刷房子 - 力扣(LeetCode)

 三、代码示例

class Solution {
public:int minCost(vector<vector<int>>& costs) {int n = costs.size();vector<vector<int>> dp(n+1,vector<int>(3));for(int i = 1;i<=n;i++){dp[i][0]=min(dp[i-1][1],dp[i-1][2])+costs[i-1][0];//红色dp[i][1]=min(dp[i-1][0],dp[i-1][2])+costs[i-1][1];//蓝色dp[i][2]=min(dp[i-1][0],dp[i-1][1])+costs[i-1][2];//绿色}return min(dp[n][0],min(dp[n][1],dp[n][2]));}
};

 

 

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

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

相关文章:

  • xcode 编译运行错误 Sandbox: rsync(29343) deny(1) file-write-create
  • pycharm生成图片
  • 【设计模式】简单工厂模式,工厂模式,抽象工厂模式,单例,代理,go案例区分总结
  • 自动化测试基础知识详解(全)
  • 如何通过知识共享构建企业创新文化
  • 利用计算属性 结合 new date()写一个当前时间的计时器时间格式为年月日 时分秒
  • 通过API接口获取1688店铺所有商品的技术实现与实战指南
  • AI 产品的 MVP 构建逻辑:Prompt 工程 ≠ 产品工程?(实战增补篇)
  • CANdela/Diva系列9--CDD文件在CANoe工程的应用1
  • Centos7升级openssl
  • 互联网大厂Java求职面试:AI与云原生架构实战解析
  • day39 pythonCNN网络
  • CSS Animation 详解
  • python第35天打卡
  • RISC-V 开发板 MUSE Pi Pro 搭建 Spacengine AI模型部署环境
  • 联软SDP+安渡:收敛暴露面 从生产网自动取数 安全高效
  • 班级管理系统
  • Python+Flask+Html做一个简单的测试联调工具
  • 链路追踪神器zipkin安装详细教程教程
  • C语言中:递归问题的深入研究
  • mp中的密码处理
  • 数据分析的方法总结
  • 工业控制核心引擎高性能MCU——MM32F5370
  • 【教程】服务器如何防止GET/SYN洪泛攻击
  • C++ 模板元编程语法大全
  • 如何在使用kickstart安装物理机操作系统的过程中核对服务器的SN
  • Docker容器启动失败的常见原因分析
  • 每日C++ 5.28dddd
  • FreeCAD如何对器件表面逐面着色
  • 单点登陆(SSO)简介-笔记