LC 265. Paint House II
There are a row of n houses, each house can be painted with one of the k colors. The cost of painting each house with a certain color is different. You have to paint all the houses such that no two adjacent houses have the same color.
The cost of painting each house with a certain color is represented by a n x k cost matrix. For example, costs[0][0] is the cost of painting house 0 with color 0; costs[1][2] is the cost of painting house 1 with color 2, and so on... Find the minimum cost to paint all houses.
思路:DP,第n个house如果paint color i, 那第n-1个house就不能。
注意minval1和minval2是前一次dp的最小值,而不是前一个costs的最小值。
 class Solution {
 public:
     int minCostII(vector<vector<int>>& costs) {
         if (costs.size() ==  || costs[].size() == ) return ;
         int N = costs.size();
         int K = costs[].size();
         vector<vector<int>> dp(N, vector<int>(K, ));
         for (int i = ; i < K; i++) dp[][i] = costs[][i];
         for (int i = ; i < N; i++) {
             int minval1 = INT_MAX, minval2 = INT_MAX;
             int minidx1 = , minidx2 = ;
             for (int j = ; j < K; j++) {
                 if (minval1 > dp[i-][j]) {
                     minval1 = dp[i-][j];
                     minidx1 = j;
                 }
             }
             for (int j = ; j < K; j++) {
                 if (minval2 > dp[i-][j] && j != minidx1) {
                     minval2 = dp[i-][j];
                     minidx2 = j;
                 }
             }
             for (int j = ; j < K; j++) {
                 if (minidx1 == j) dp[i][j] = costs[i][j] + minval2;
                 else dp[i][j] = costs[i][j] + minval1;
             }
         }
         int minval = INT_MAX;
         for (int i = ; i<K; i++) {
             minval = min(minval, dp[N-][i]);
         }
         return minval;
     }
 };
LC 265. Paint House II的更多相关文章
- leetcode 198. House Robber 、 213. House Robber II 、337. House Robber III 、256. Paint House(lintcode 515) 、265. Paint House II(lintcode 516) 、276. Paint Fence(lintcode 514)
		House Robber:不能相邻,求能获得的最大值 House Robber II:不能相邻且第一个和最后一个不能同时取,求能获得的最大值 House Robber III:二叉树下的不能相邻,求能 ... 
- 265. Paint House II 房子涂色K种选择的版本
		[抄题]: There are a row of n houses, each house can be painted with one of the k colors. The cost of p ... 
- 265. Paint House II
		题目: There are a row of n houses, each house can be painted with one of the k colors. The cost of pai ... 
- [LeetCode#265] Paint House II
		Problem: There are a row of n houses, each house can be painted with one of the k colors. The cost o ... 
- [leetcode]265. Paint House II粉刷房子(K色可选)
		There are a row of n houses, each house can be painted with one of the k colors. The cost of paintin ... 
- [LeetCode] 265. Paint House II 粉刷房子
		There are a row of n houses, each house can be painted with one of the k colors. The cost of paintin ... 
- [LintCode] Paint House II 粉刷房子之二
		There are a row of n houses, each house can be painted with one of the k colors. The cost of paintin ... 
- [LeetCode] Paint House II 粉刷房子之二
		There are a row of n houses, each house can be painted with one of the k colors. The cost of paintin ... 
- LeetCode Paint House II
		原题链接在这里:https://leetcode.com/problems/paint-house-ii/ 题目: There are a row of n houses, each house ca ... 
随机推荐
- Hexo NexT主题内加入动态背景
			主题内新添加内容 _layout.swig 找到themes\next\layout\_layout.swig文件,添加内容:在<body>里添加: 1 2 3 <div class ... 
- Delphi 线程的同步
- Switch按钮
			使用CSS+HTML5修改原生checkbox为Switch Button .switch { width: 45px; height: 15px; position: relative; borde ... 
- JS 时间差计算 XX秒前、XX小时前、XX天前
			//时间差 function GetTime(time) {//di作为一个变量传进来 //如果时间格式是正确的,那下面这一步转化时间格式就可以不用了 var dateBegin = new Date ... 
- 扫描局域网ip存活
			#!/bin/bash # #******************************************************************** #encoding -*-utf ... 
- 洛谷P1282 多米诺骨牌【线性dp】
			题目:https://www.luogu.org/problemnew/show/P1282 题意: 给定n个牌,每个牌有一个上点数和下点数.可以通过旋转改变交换上下点数. 问使得上点数之和和下点数之 ... 
- 洛谷P1020 导弹拦截【单调栈】
			题目:https://www.luogu.org/problemnew/show/P1020 题意: 给定一些导弹的高度. 一个导弹系统只能拦截高度不增的一系列导弹,问如果只有一个系统最多能拦截多少导 ... 
- Waiting (TTFB) 时间
			什么是 Waiting (TTFB) 时间 TTFB 是 Time to First Byte 的缩写,指的是浏览器开始收到服务器响应数据的时间(后台处理时间+重定向时间),是反映服务端响应速度的重要 ... 
- 06-vue项目02:vuex、Mutation、Action、ElementUI、axios
			1.Vuex 1.为什么使用VueX data从最上面的组件,一层层往下传值,一层层的验证 Vue单向数据流 “中央空调“,代理 VueX 解决数据 传值.. 2.Vuex介绍与安装 (1)Vuex官 ... 
- HDU 6098 - Inversion   |  2017 Multi-University Training Contest 6
			/* HDU 6098 - Inversion [ 贪心,数论 ] | 2017 Multi-University Training Contest 6 题意: 求出所有B[i] = max(A[j] ... 
