题目链接:931. 下降路径最小和 - 力扣(LeetCode)
下面是用动态规划的思想解决这道题的过程,相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。
参考代码:
class Solution {
public:
int minFallingPathSum(vector<vector<int>>& matrix) {
int n=matrix.size();
//多开一行,多开两列,先把所有都初始化成最大值
vector<vector<int>> dp(n+1,vector<int>(n+2,INT_MAX));
//把第一行初始化为0
for(int i=0;i<=n+1;i++)
{
dp[0][i]=0;
}
//填表
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
dp[i][j]=min(min(dp[i-1][j-1],dp[i-1][j]),dp[i-1][j+1])+matrix[i-1][j-1];
}
}
//找最后一行的最小值
int min=dp[n][0];
for(int i=1;i<=n+1;i++)
{
if(dp[n][i]<min)
{
min=dp[n][i];
}
}
return min;
}
};
以上就是分析这道dp题目的整个过程啦,你学会了吗?如果以上题解对你有所帮助,那么就点亮一下小心心,点点关注呗,后期还会持续更新动态规划的经典题目哦,我们下期见!!!!! !!!!