跟之前不同由于可能取到最右上角值,则左右各加一列,并且由于求最小值,则加的列须设置为正无穷大;
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;}
};