动态规划思想,建立一个新的total_cost arrray,初始化第一排,动态转移方程是
total_cost[i][0] = costs[i][0] + total_cost[i-1]里其他两个的较小的
class Solution {
public int minCost(int[][] costs) {
int n = costs.length;
if(n==0) return 0;
int[][] total_costs = new int[n][3];
for(int i=0; i<3; i++){
total_costs[0][i] = costs[0][i];
}
if(n > 1){
for(int i=1; i<n; i++){
total_costs[i][0] = costs[i][0] + Math.min(total_costs[i-1][1],total_costs[i-1][2]);
total_costs[i][1] = costs[i][1] + Math.min(total_costs[i-1][0],total_costs[i-1][2]);
total_costs[i][2] = costs[i][2] + Math.min(total_costs[i-1][0],total_costs[i-1][1]);
}
}
int max = Integer.MAX_VALUE;
for(int i=0; i<3; i++){
max = Math.min(max, total_costs[n-1][i]);
}
return max;
}
}