Leetcode 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.
1 public class Solution { 2 public int MinCost(int[,] costs) { 3 int dpRed = 0, dpBlue = 0, dpGreen = 0; 4 5 for (int i = 0; i < costs.GetLength(0); i++) 6 { 7 int tRed = dpRed, tBlue = dpBlue, tGreen = dpGreen; 8 9 dpRed = Math.Min(tBlue, tGreen) + costs[i, 0]; 10 dpBlue = Math.Min(tRed, tGreen) + costs[i, 1]; 11 dpGreen = Math.Min(tRed, tBlue) + costs[i, 2]; 12 } 13 14 return Math.Min(dpRed, Math.Min(dpBlue, dpGreen)); 15 } 16 }