public int minCostTopDownPainHouse1or2(int[][] costs) {
        if (costs.length == 0) {
            return 0;
        }
        int[][] dp = new int[costs.length][3];
        return minCostUtil(costs, 0, -1, 3, dp);
    }
Paint House
https://leetcode.com/problems/paint-house/
https://leetcode.com/problems/paint-house-ii/
src/com/interview/dynamic/PaintHouse.java