Note:
为数不多的能勉强想明白的动态规划
从下面往上面考虑,没个位置都有两种走法,比如说图例的7,要不从8上去,要不从3上去
那么每次取个 min(f[i + 1][j], f[i + 1][j + 1]); 就可以了
注意算的时候要从倒数第二行开始计算的
代码如下:
class Solution {
public:
int minimumTotal(vector<vector<int>>& f) {
for(int i = f.size() - 2; i >= 0; i --)
for(int j = 0; j <= i; j ++)
f[i][j] += min(f[i + 1][j], f[i + 1][j + 1]);
return f[0][0];
}
};