Given a cost matrix cost[][] and a position (m, n) in cost[][], write a function that returns cost of minimum cost path to reach (m, n) from (0, 0). Each cell of the matrix represents a cost to traverse through that cell. Total cost of a path to reach (m, n) is sum of all the costs on that path (including both source and destination). You can only traverse down, right and diagonally lower cells from a given cell, i.e., from a given cell (i, j), cells (i+1, j), (i, j+1) and (i+1, j+1) can be traversed. You may assume that all costs are positive integers.
For example, in the following figure, what is the minimum cost path to (2, 2)?Â
Â
The path with minimum cost is highlighted in the following figure. The path is (0, 0) –> (0, 1) –> (1, 2) –> (2, 2). The cost of the path is 8 (1 + 2 + 2 + 3).Â
Â
Python
# Dynamic Programming Python implementation of Min Cost Path # problem R = 3 C = 3 Â
def minCost(cost, m, n): Â
    # Instead of following line, we can use int tc[m + 1][n + 1] or     # dynamically allocate memory to save space. The following     # line is used to keep te program simple and make it working     # on all compilers.     tc = [[ 0 for x in range (C)] for x in range (R)] Â
    tc[ 0 ][ 0 ] = cost[ 0 ][ 0 ] Â
    # Initialize first column of total cost(tc) array     for i in range ( 1 , m + 1 ):         tc[i][ 0 ] = tc[i - 1 ][ 0 ] + cost[i][ 0 ] Â
    # Initialize first row of tc array     for j in range ( 1 , n + 1 ):         tc[ 0 ][j] = tc[ 0 ][j - 1 ] + cost[ 0 ][j] Â
    # Construct rest of the tc array     for i in range ( 1 , m + 1 ):         for j in range ( 1 , n + 1 ):             tc[i][j] = min (tc[i - 1 ][j - 1 ], tc[i - 1 ][j],                             tc[i][j - 1 ]) + cost[i][j] Â
    return tc[m][n] Â
# Driver program to test above functions cost = [[ 1 , 2 , 3 ], Â Â Â Â Â Â Â Â [ 4 , 8 , 2 ], Â Â Â Â Â Â Â Â [ 1 , 5 , 3 ]] print (minCost(cost, 2 , 2 )) Â
# This code is contributed by Bhavya Jain |
8
Â
Time Complexity: O(m*n)
Auxiliary Space: O(m*n)
Please refer complete article on Dynamic Programming | Set 6 (Min Cost Path) for more details!
Â
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!