代码:
class Solution {
public int minFallingPathSum(int[][] matrix) {
int n = matrix.length;
if(n==1){
return matrix[0][0];
}
int[][] sum = new int[n][n];
for(int i=0;i<n;i++){
sum[0][i] = matrix[0][i];
}
for(int i=1;i<n;i++){
for(int j=1;j<n-1;j++){
sum[i][j] = Math.min(Math.min(sum[i-1][j-1],sum[i-1][j]),sum[i-1][j+1])+matrix[i][j];
}
sum[i][0] = Math.min(sum[i-1][0],sum[i-1][1])+matrix[i][0];
sum[i][n-1] = Math.min(sum[i-1][n-2],sum[i-1][n-1])+matrix[i][n-1];
}
int min = sum[n-1][0];
for(int i=1;i<n;i++){
min = Math.min(sum[n-1][i],min);
}
return min;
}
}