问题

解答 (动态规划+深度优先搜索)
/**
* @param {number[][]} costs
* @return {number}
*/
var minCost = function(costs) {
var dp = [];
var n = costs.length;
var max = 9999999;
for(let i = 0; i <= n; i++) {
dp[i] = [];
for(let j = 0; j <= 2; j++) {
dp[i][j] = max;
}
}
const dfs = (pos, d) => {
if(pos == n) { return 0; }
let min = max;
for(let i = 0; i <= 2; i++) {
if(d == i) { continue; }
if(dp[pos][i] >= max) {
dp[pos][i] =Math.min(dfs(pos+1,i) + costs[pos][i],dp[pos][i]);
}
min = Math.min(dp[pos][i],min);
}
return min;
}
return dfs(0,-1);
};