Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- destination_line, destination_column = map(int, input().split())
- costs = [list(map(int, input().split())) for k in range(destination_line)]
- dynamic = [[0] * destination_column for i in range(destination_line)]
- path = [[(0, 0)] * destination_column for i in range(destination_line)]
- dynamic[0][0] = costs[0][0]
- restored_path = []
- for column in range(1, destination_column):
- dynamic[0][column] = dynamic[0][column - 1] + costs[0][column]
- path[0][column] = (0, column - 1)
- for line in range(1, destination_line):
- dynamic[line][0] = dynamic[line - 1][0] + costs[line][0]
- path[line][0] = (line - 1, 0)
- for line in range(1, destination_line):
- for column in range(1, destination_column):
- if dynamic[line][column - 1] >= dynamic[line - 1][column]:
- dynamic[line][column] = dynamic[line][column - 1] + costs[line][column]
- path[line][column] = (line, column - 1)
- else:
- dynamic[line][column] = dynamic[line - 1][column] + costs[line][column]
- path[line][column] = (line - 1, column)
- print(dynamic[destination_line - 1][destination_column - 1])
- line = destination_line - 1
- column = destination_column - 1
- print(path)
- while line or column:
- new_line, new_column = path[line][column]
- if line == new_line:
- restored_path.append('R')
- else:
- restored_path.append('D')
- line, column = new_line, new_column
- print(*reversed(restored_path))
Advertisement
Add Comment
Please, Sign In to add comment