zoukankan      html  css  js  c++  java
  • 256. Paint House

    问题描述:

    There are a row of n houses, each house can be painted with one of the three colors: red, blue or green. 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 3 cost matrix. For example, costs[0][0] is the cost of painting house 0 with color red; costs[1][2] is the cost of painting house 1 with color green, and so on... Find the minimum cost to paint all houses.

    Note:
    All costs are positive integers.

    Example:

    Input: [[17,2,17],[16,16,5],[14,3,19]]
    Output: 10
    Explanation: Paint house 0 into blue, paint house 1 into green, paint house 2 into blue. 
                 Minimum cost: 2 + 5 + 3 = 10.

    解题思路:

    这里给出了红绿蓝三种颜色来涂房子,要求我们用最小的耗费来做。

    因为颜色个数就只有3个,所以我们可以直接取另外两个最小的值。

    当前记录的是,到这个房子位置,涂该颜色最小的耗费

    代码:

    class Solution {
    public:
        int minCost(vector<vector<int>>& costs) {
            int n = costs.size();
            if(n == 0) return 0;
            for(int i = 1; i < n; i++){
                costs[i][0] += min(costs[i-1][1], costs[i-1][2]);
                costs[i][1] += min(costs[i-1][0], costs[i-1][2]);
                costs[i][2] += min(costs[i-1][0], costs[i-1][1]);
            }
            
            return min(costs[n-1][0], min(costs[n-1][1], costs[n-1][2]));
        }
    };
  • 相关阅读:
    Java_File类
    Java_Math类和Random类
    Java_包装类
    Java_Stringbuilder和StringBuffer
    Java_String
    Java_数组, 懒得整理了 ---------------------> 未完, 待续
    Java_内部类
    Java_三大特征相关
    Java_垃圾回收机制(未掌握)
    重载(overload)和重写(override)的区别?
  • 原文地址:https://www.cnblogs.com/yaoyudadudu/p/9315836.html
Copyright © 2011-2022 走看看