In [11]:
def solve(grid, no_rows, no_columns):
w, h = no_columns, no_rows;
result_mat = [[5000000 for x in range(w)] for y in range(h)]
result_mat[0] = grid[0]
for row in range (0, no_rows-1):
for col in range(0, no_columns):
result_mat[row+1][col] = min(result_mat[row+1][col], grid[row+1][col] + result_mat[row][col])
if col+1 < no_columns:
result_mat[row+1][col+1] = min(result_mat[row+1][col+1], grid[row+1][col+1] + result_mat[row][col])
if col-1 >= 0:
result_mat[row+1][col-1] = min(result_mat[row+1][col-1], grid[row+1][col-1] + result_mat[row][col])
result = 5000000
for i in range(0, no_columns):
result = min(result, result_mat[no_rows-1][i])
print result
In [12]:
props = map(int, raw_input().split())
no_rows = props[0]
no_columns = props[1]
grid = [[None for x in range(no_columns)] for y in range(no_rows)]
for i in range(0, no_rows):
bus = map(int, raw_input().split())
for j in range(0, no_columns):
grid[i][j] = bus[j]
solve(grid, no_rows, no_columns)
In [ ]: