典型的动态规划问题,可以自下向上更新最短路径,思路草图如下:
分解为子问题,可以看成找2到底的最短路径即 2+min(3的路径,4的路径)即可
DP方程为 dp[i][j]=dp[i][j]+min(dp[i+1][j]+dp[i+1][j+1])
代码如下,, 注意是自下向上
class Solution {
public:
int minimumTotal(vector<vector<int>>& triangle) {
for(int i=triangle.size()-2;i>=0;i--){
for(int j=0;j<triangle.at(i).size();j++){
triangle[i][j]+=min(triangle[i+1][j],triangle[i+1][j+1]);
}
}
return triangle[0][0];
}
};