## NOTE: This problem is a more challenging version of Problem 81.

The minimal path sum in the $5$ by $5$ matrix below, by starting in any cell in the left column and finishing in any cell in the right column, and only moving up, down, and right, is indicated in red and bold; the sum is equal to $994$.

$$

\begin{pmatrix}

131 & 673 & \color{red}{234} & \color{red}{103} & \color{red}{18}\\

\color{red}{201} & \color{red}{96} & \color{red}{342} & 965 & 150\\

630 & 803 & 746 & 422 & 111\\

537 & 699 & 497 & 121 & 956\\

805 & 732 & 524 & 37 & 331

\end{pmatrix}

$$

Find the minimal path sum from the left column to the right column in matrix.txt (right click and “Save Link/Target As…”), a 31K text file containing an $80$ by $80$ matrix.

### To find the minimal path sum from the left column to the right column in the given matrix, we can use a dynamic programming approach. We’ll start from the first column and calculate the minimal path sum for each cell in the matrix by considering the minimum of the adjacent cells from the previous column.

Here’s one way to solve the problem using Python code:

“`python

import numpy as np

def minimal_path_sum(matrix):

rows, cols = matrix.shape

dp = np.zeros((rows, cols))

# Initialize the first column of dp with the values from the matrix

dp[:, 0] = matrix[:, 0]

# Calculate the minimal path sum for each cell in dp

for j in range(1, cols):

# Calculate the minimal path sum for each cell in column j

for i in range(rows):

# Calculate the minimal path sum for the current cell

dp[i, j] = matrix[i, j] + min(

dp[i, j-1], # Left

dp[(i-1)%rows, j-1], # Up (wrap around for top row)

dp[(i+1)%rows, j-1] # Down (wrap around for bottom row)

)

# Find the minimum path sum in the last column

min_sum = np.min(dp[:, -1])

return min_sum

# Read the matrix from the file

matrix = np.genfromtxt(‘matrix.txt’, delimiter=’,’)

# Call the function to find the minimal path sum

min_path_sum = minimal_path_sum(matrix)

print(“Minimal path sum:”, min_path_sum)

“`

Make sure you have the `numpy` library installed in order to run this code. The code reads the matrix from the given file, calculates the minimal path sum using the `minimal_path_sum` function, and finally prints the result.

Note: The code assumes that the matrix in the file is a comma-separated values (CSV) file with no spaces between the values.

##### More Answers:

Coin PartitionsSquare Root Digital Expansion

Path Sum: Two Ways