三角形的最短路径和
这道题使用动态规划求解
1
2 3
4 5 6
dp[i][j]从三角形顶部走到i,j的最短路径和
class Solution {
public:
int minimumTotal(vector<vector<int>>& triangle) {
//i行j列
int m = triangle.size();
vector<vector<int>> dp(m,vector<int>(m,0));
dp[0][0] = triangle[0][0];
//dp[i][j] = min(dp[i-1][j-1],dp[i-1][j])+triangle[i][j]
//j=0 dp[i][0] = dp[i-1][0]+triangle[i][0]
//i=j(dp[i-1][j]没有意义) dp[i][i] = dp[i-1][i-1] + triangle[i][i]
for(int i=1;i<m;++i)
{
dp[i][0] = dp[i-1][0]+triangle[i][0];
for(int j=1;j<i;++j)
{
dp[i][j] = min(dp[i-1][j-1],dp[i-1][j])+triangle[i][j];
}
dp[i][i] = dp[i-1][i-1] + triangle[i][i];
}
return *min_element(dp[m - 1].begin(), dp[m - 1].end());
}
};
本文来自博客园,作者:勒勒乐了,转载请注明原文链接:https://www.cnblogs.com/matytan/p/15519517.html

浙公网安备 33010602011771号