classSolution{public:intminFallingPathSum(vector<vector<int>>& matrix){int n = matrix.size();if(n ==1)return matrix[0][0];int minn = INT_MAX;for(int i =1; i < n; i ++)for(int j =0; j < n; j ++){int t = matrix[i -1][j];for(int k =max(0, j -1); k <=min(n -1, j +1); k ++)
t =min(t, matrix[i -1][k]);
matrix[i][j]+= t;}for(int i =0; i < n; i ++) minn =min(minn, matrix[n -1][i]);return minn;}};
三角形路径和
classSolution{public:intminimumTotal(vector<vector<int>>& triangle){int n = triangle.size();for(int i =1; i < n; i ++)for(int j =0; j <= i; j ++){
triangle[i][j]+=min(triangle[i -1][max(0, j -1)], triangle[i -1][min(i -1, j)]);}int res = INT_MAX;for(int j =0; j < n; j ++)
res =min(res, triangle[n -1][j]);return res;}};
下降路径最小和思路:动态三角形模型class Solution {public: int minFallingPathSum(vector<vector<int>>& matrix) { int n = matrix.size(); if (n == 1) return matrix[0][0]; int minn = INT_MAX; for (int i = 1; i <