1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #include <iostream> #include <vector> using namespace std; class Solution { public: int minFallingPathSum(vector<vector<int>>& matrix) { int n = matrix.size(); for (int i = n - 2;i >= 0;i--) { for (int j = 0;j < n;j++) { int a = matrix[i + 1][j], b = INT_MAX, c = INT_MAX; if (j + 1 <= n - 1) { b = matrix[i + 1][j + 1]; } if (j >= 1) { c = matrix[i + 1][j - 1]; } matrix[i][j] += min(a, min(b, c)); } } int ans = INT_MAX; for (int j = 0;j < n;j++)ans = min(ans, matrix[0][j]); return ans; } };
|