【动态规划】下降路径最小和
跟之前不同由于可能取到最右上角值,则左右各加一列,并且由于求最小值,则加的列须设置为正无穷大;
class Solution {
public:
int minFallingPathSum(vector<vector<int>>& matrix) {
int n=matrix.size();
vector<vector<int>> dp(n+1,vector<int>(n+2));
for(int i=1;i<=n;i++){
dp[i][0]=INT_MAX;
dp[i][n+1]=INT_MAX;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
dp[i][j]=min(min(dp[i-1][j],dp[i-1][j-1]),dp[i-1][j+1])+matrix[i-1][j-1];
}
}
int tmp=INT_MAX;
for(int j=1;j<=n;j++){
if(dp[n][j]<tmp){
tmp=dp[n][j];
}
}
return tmp;
}
};