package com.fishercoder.solutions;

/**
 * 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.
 */
public class _256 {

    public int minCost(int[][] costs) {
        if (costs == null || costs.length == 0) {
            return 0;
        }
        for (int i = 1; i < costs.length; i++) {
            costs[i][0] += Math.min(costs[i - 1][1], costs[i - 1][2]);
            costs[i][1] += Math.min(costs[i - 1][0], costs[i - 1][2]);
            costs[i][2] += Math.min(costs[i - 1][1], costs[i - 1][0]);
        }
        int n = costs.length - 1;
        return Math.min(Math.min(costs[n][0], costs[n][1]), costs[n][2]);
    }

}

@@ -33,626 +33,69 @@
 s;%0A%0A
-/**%0A * 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.%0A%0A The cost of painting each house with a certain color is represented by a n x 3 cost matrix. For example, costs%5B0%5D%5B0%5D is the cost of painting house 0 with color red; costs%5B1%5D%5B2%5D is the cost of painting house 1 with color green, and so on... Find the minimum cost to paint all houses.%0A%0A Note:%0A All costs are positive integers.%0A */%0Apublic class _256 %7B%0A%0A
+public class _256 %7B%0A%0A    public static class Solution1 %7B%0A    
     
@@ -126,24 +126,28 @@
 %5B%5D costs) %7B%0A
+    
         if (
@@ -192,24 +192,28 @@
             
+    
 return 0;%0A  
@@ -210,34 +210,42 @@
 turn 0;%0A        
+  
-%7D%0A
+  %7D%0A    
         for (int
@@ -273,24 +273,28 @@
 gth; i++) %7B%0A
+    
             
@@ -356,32 +356,36 @@
 %5D);%0A            
+    
 costs%5Bi%5D%5B1%5D += M
@@ -419,32 +419,36 @@
 sts%5Bi - 1%5D%5B2%5D);%0A
+    
             cost
@@ -502,34 +502,42 @@
 1%5D%5B0%5D);%0A        
+  
-%7D%0A
+  %7D%0A    
         int n = 
@@ -554,16 +554,20 @@
 th - 1;%0A
+    
         
@@ -636,13 +636,22 @@
 %5D);%0A    
+    %7D%0A    
 %7D
-%0A
 %0A%7D%0A

refactor 256