文章目录

  • 1. 题目
  • 2. 解题

1. 题目

假如有一排房子,共 n 个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其与相邻的两个房子颜色不能相同。

当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。每个房子粉刷成不同颜色的花费是以一个 n x 3 的矩阵来表示的。

例如,costs[0][0] 表示第 0 号房子粉刷成红色的成本花费;costs[1][2] 表示第 1 号房子粉刷成绿色的花费,以此类推。请你计算出粉刷完所有房子最少的花费成本。

注意:
所有花费均为正整数。示例:
输入: [[17,2,17],[16,16,5],[14,3,19]]
输出: 10
解释: 将 0 号房子粉刷成蓝色,1 号房子粉刷成绿色,2 号房子粉刷成蓝色。最少花费: 2 + 5 + 3 = 10。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/paint-house
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:LeetCode 265. 粉刷房子 II(DP)

  • dp[i][c] 表示刷完 i 房子后,i 房子是 c 颜色时,花费最小多少
class Solution {public:int minCost(vector<vector<int>>& costs) {int n = costs.size(), house, color;if(n==0) return 0;vector<vector<int>> dp(n,vector<int>(3,INT_MAX));dp[0] = costs[0];for(house = 1; house < n; house++){for(color = 0; color < 3; ++color){dp[house][color] = min(dp[house][color], costs[house][color]+min(dp[house-1][(color+1)%3], dp[house-1][(color+2)%3]));}}return min(dp[n-1][0], min(dp[n-1][1], dp[n-1][2]));}
};

12 ms 9.5 MB


长按或扫码关注我的公众号,一起加油、一起学习进步!

LeetCode 256. 粉刷房子(DP)相关推荐

  1. Leetcode 256.粉刷房子

    Time: 20190903 Type: Easy 题目描述 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相 ...

  2. LeetCode 265. 粉刷房子 II(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成 k 种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同. 当然,因为市场上不同颜色油 ...

  3. leetcode 1473. 粉刷房子 III(dp)

    在一个小城市里,有 m 个房子排成一排,你需要给每个房子涂上 n 种颜色之一(颜色编号为 1 到 n ).有的房子去年夏天已经涂过颜色了,所以这些房子不需要被重新涂色. 我们将连续相同颜色尽可能多的房 ...

  4. LeetCode--265. 粉刷房子Ⅱ(动态规划)

    粉刷房子Ⅱ(动态规划) 1. 题目描述 2. 题目分析 3. C语言实现 1. 题目描述 难度:困难 2. 题目分析 这道题目是256. 粉刷房子的进阶题,其实解题思路和256题是一样的: 动态规划 ...

  5. Leetcode学习笔记(粉刷房子)

    091. 粉刷房子 用矩阵spend记录下来当前的最小花费,spend[i][1]表示第i个房子涂成蓝色时共支出的最小花费 class Solution:def minCost(self, costs ...

  6. LeetCode 编辑距离 II(DP)

    1. 题目 给你两个单词 s 和 t,请你计算出将 s 转换成 t 所使用的最少操作数. 你可以对一个单词进行如下两种操作: 删除一个字符 替换一个字符 注意: 不允许插入操作 题目保证有解 示例: ...

  7. LeetCode 72. 编辑距离(DP)

    1. 题目 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示 ...

  8. LeetCode--256. 粉刷房子(动态规划)

    粉刷房子(动态规划) 1. 题目描述 2. 题目分析 3. C语言实现 1. 题目描述 难度:简单 2. 题目分析 这道题目是一道典型的动态规划问题,如果我们只把目光放在一个最少花费的身上,状态转化方 ...

  9. Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game)

    Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game) 爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个玩家的回合,玩家需 ...

最新文章

  1. 在Ubuntu 14.04 64bit上安装Markdown和绘图软件Haroopad
  2. 递归/回溯:subsets求子集
  3. DASI_1_IntroToData
  4. 网站被k不要慌,看看“老油条”们是怎么解决的吧!
  5. BERT论文阅读(二): CG-BERT:Conditional Text Generation with BERT for Generalized Few-shot Intent Detection
  6. JSP生成验证码源程序
  7. Ajax-goahead局部刷新页面
  8. Hyperledger Fabric 1.0 从零开始(七)——启动Fabric多节点集群
  9. 人生的许多不经意-致51CTO
  10. vulkan api_Vulkan开放标准API支持,针对Linux的新游戏以及更多游戏
  11. DTMF采用RFC2833进行带内传输的实现[ZT]
  12. python类中引用数据是通过_重载python类中的[]运算符以引用数字阵列数据内存
  13. Linux入门之安装Centos并实现Xshell远程SSH连接
  14. 如何面对大容量的数据存储
  15. ceph 源代码分析 — peering 过程
  16. java poi ppt转图片
  17. 两步使用Ubuntu 创建自己的网站
  18. android 方向传感器应用
  19. 苹果app退款_苹果上最流氓的功能,终于被彻底关掉,还退款208元
  20. 新能源车牌识别SDK核心算法不断更新

热门文章

  1. php角色权限安全,php – 安全的chmod权限?
  2. python 生成式,迭代器,生成器
  3. 剑指offer:二叉树中和为某一值的路径
  4. 计算机控制分离性原理是什么,(第12讲)状态观测器和分离原理.ppt
  5. c++远征之继承篇——隐藏,isa,虚析构函数
  6. vim编辑器中如何查找某个词
  7. 学习方向、当前要做的事
  8. Android初学第21天
  9. mysql 5.6.38 数据库编译安装
  10. CodeForces - 796D Police Stations bfs