File tree Expand file tree Collapse file tree 1 file changed +22
-0
lines changed Expand file tree Collapse file tree 1 file changed +22
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Time: O(m * n^2)
2
+ // Space: O(n)
3
+
4
+ // dp
5
+ class Solution {
6
+ public:
7
+ int minPathCost (vector<vector<int >>& grid, vector<vector<int >>& moveCost) {
8
+ vector<vector<int >> dp (2 , vector<int >(size (grid[0 ])));
9
+ for (int j = 0 ; j < size (grid[0 ]); ++j) {
10
+ dp[0 ][j] = grid[0 ][j];
11
+ }
12
+ for (int i = 0 ; i < size (grid) - 1 ; ++i) {
13
+ dp[(i + 1 ) % 2 ] = vector<int >(size (grid[0 ]), numeric_limits<int >::max ());
14
+ for (int k = 0 ; k < size (grid[0 ]); ++k) {
15
+ for (int j = 0 ; j < size (grid[0 ]); ++j) {
16
+ dp[(i + 1 ) % 2 ][j] = min (dp[(i + 1 ) % 2 ][j], dp[i % 2 ][k] + moveCost[grid[i][k]][j] + grid[i + 1 ][j]);
17
+ }
18
+ }
19
+ }
20
+ return *min_element (cbegin (dp[(size (grid) - 1 ) % 2 ]), cend (dp[(size (grid) - 1 ) % 2 ]));
21
+ }
22
+ };
You can’t perform that action at this time.
0 commit comments