-
尝试把大问题拆分为子问题,它们的区别在于问题的规模。
-
规模在这里是:层高。
-
base case 是当矩阵行高只有 1 时,它的最优路径是显而易见的。
-
有了一层高的「最优路径」,我们推出两层高的「最优路径」
-
有了两层高的「最优路径」,我们推出三层高的「最优路径」
-
triangle.length-1层高的「最优路径」推出 triangle.length 层高的「最优路径」
var minimumTotal = function (arr) {
var n = arr.length;
var dp = new Array(n).fill(0).map((v, i) => new Array(arr[i].length));
for (var i = n - 1; i >= 0; i--) {
for (var j = 0; j < arr[i].length; j++) {
if (i == n - 1) {
dp[i][j] = arr[i][j];
} else {
var value = Math.min(dp[i + 1][j], dp[i + 1][j + 1]);
dp[i][j] = value + arr[i][j];
}
}
}
return dp[0][0];
};