题目链接:
931. 下降路径最小和 - 力扣(LeetCode)
题目描述:
![](https://img-blog.csdnimg.cn/f654c791a85c4c8bb38982ded24aa1b8.png)
思路解析:
![](https://img-blog.csdnimg.cn/3229ac2ad58e4a0fa7b082deca01ceb1.png)
![](https://img-blog.csdnimg.cn/607ef064a6884782b093b507a562268f.png)
![](https://img-blog.csdnimg.cn/a5226edf0a66468a85a4aad80a085d5e.png)
![](https://img-blog.csdnimg.cn/4cd43c2ae24f4788b712875a8b6b8ad6.png)
![](https://img-blog.csdnimg.cn/1adf3311e94540ccb630d0870e52e42e.png)
![](https://img-blog.csdnimg.cn/e7202c228f5e484faa41730c47b29b89.png)
![](https://img-blog.csdnimg.cn/5196daea698344d4bd735bd5f65f9177.png)
![](https://img-blog.csdnimg.cn/0ab7a876065e4eb7acc1418e0b4af9ae.png)
![](https://img-blog.csdnimg.cn/7d0ea851878d461f8414efb4584ae1c4.png)
![](https://img-blog.csdnimg.cn/6041211c25744feaa693155382ce8ab8.png)
![](https://img-blog.csdnimg.cn/ebedc41b8ba64ea4b5daef4e9991808e.png)
解题代码:
class Solution {
public:
int minFallingPathSum(vector<vector<int>>& matrix)
{
int m = matrix.size();
vector<vector<int>> dp(m+1,vector<int>(m+2));
for(int i = 0; i < m+2 ; ++i )
{
dp[0][i] = 0;
}
for(int i = 1;i < m+1 ; ++i)
{
dp[i][0] = INT_MAX;
}
for(int i = 1;i < m+1 ; ++i)
{
dp[i][m+1] = INT_MAX;
}
for(int i = 1 ; i < m+1 ; ++i)
{
for(int j = 1; j < m+1 ;++j)
{
dp[i][j]=min(dp[i-1][j-1],min(dp[i-1][j+1],dp[i-1][j]))+matrix[i-1][j-1];
}
}
int ret=INT_MAX;
for(int i = 1;i<m+1;++i)
{
ret=min(dp[m][i],ret);
}
return ret;
}
};