package com.interview.books.svinterview;
import com.interview.utils.ConsoleWriter;
import com.interview.utils.DataGenerator;
import java.util.Arrays;
/**
* Created_By: stefanie
* Date: 14-12-8
* Time: 下午4:21
*/
public class SV14_MinCostPrinting {
public int minCostGreedy(int h, int[] color){
if(h <= 0 || color.length < 2) return 0;
Arrays.sort(color);
int cost = h / 2 * color[1];
cost += (h - (h / 2)) * color[0];
return cost;
}
public int minCostDP(int h, int[] color){
if(h <= 0 || color.length < 2) return 0;
int[][] cost = new int[h][color.length];
//init
for(int j = 0; j < color.length; j++) cost[0][j] = color[j];
//function
for(int i = 1; i < h; i++){
for(int j = 0; j < color.length; j++){
int min = Integer.MAX_VALUE;
for(int k = 0; k < color.length; k++){
if(j == k) continue;
min = Math.min(min, cost[i-1][k]);
}
cost[i][j] = min + color[j];
}
}
ConsoleWriter.printIntArray(cost);
int min = Integer.MAX_VALUE;
for(int j = 0; j < color.length; j++){
min = Math.min(min, cost[h-1][j]);
}
return min;
}
public static void main(String[] args){
int[] colors = DataGenerator.generateIntArray(4, 10, 1, false);
ConsoleWriter.printIntArray(colors);
SV14_MinCostPrinting planner = new SV14_MinCostPrinting();
System.out.println(planner.minCostDP(5, colors));
System.out.println(planner.minCostGreedy(5, colors));
}
}