Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Решите пожалуйста задачу ЕГЭ по инфе с сайта ФИПИ

Иван Смердов Ученик (137), открыт 1 неделю назад
Квадрат разлинован на N × N клеток (1 < N < 26). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде вправо Робот перемещается в соседнюю правую клетку; по команде вниз –
в соседнюю нижнюю. Робот разрушается при попытке выхода за границу квадрата или при попытке пересечения стены клетки. В таблице стены отмечены границами с утолщением.
Перед запуском Робота в каждой клетке квадрата указан бонус, который Робот забирает после посещения клетки. Размер бонуса в каждой клетке –
это натуральное число, не превышающее 100. Это правило относится к начальной и конечной клеткам маршрута Робота.
Определите минимальную и максимальную суммы бонусов, которые может собрать Робот, перемещаясь из левой верхней клетки квадрата в его правую нижнюю клетку. В ответе укажите два числа: сначала минимальную сумму, затем максимальную.
Исходные данные представлены в форме электронной таблицы размером
N × N, в которой одна ячейка соответствует одной клетке квадрата. Стены, через которые Роботу нельзя проходить, отмечены в электронной таблице границами с утолщением.

Пример входных данных:
1 | 8 | 8 | 4
10 | 1 | 1 | 3
1 | 3 | 12 | 2
2 | 3 | 5 | 6

Для указанных входных данных ответом является пара чисел:
27 | 41
Файл
2 ответа
—_— Мастер (1576) 1 неделю назад
Может быть не правильным



def min_and_max_bonus(grid):
"""
Finds the minimum and maximum bonus sums that the Robot can collect.

Args:
grid: A 2D list representing the grid. Walls are marked with thickened borders.

Returns:
A tuple containing the minimum and maximum bonus sums.
"""

n = len(grid)
m = len(grid[0])

# Initialize the minimum and maximum bonus sums to 0.
min_sum = 0
max_sum = 0

# Keep track of the cells that have been visited.
visited = [[False for _ in range(m)] for _ in range(n)]

# Start the Robot in the top-left corner.
i, j = 0, 0

# While the Robot has not reached the bottom-right corner, continue moving.
while i != n - 1 or j != m - 1:

# Get the current cell's bonus.
bonus = grid[i][j]

# Add the bonus to the minimum and maximum bonus sums.
min_sum += bonus
max_sum += bonus

# Mark the current cell as visited.
visited[i][j] = True

# If the Robot can move right and the right cell has not been visited, move right.
if j + 1 < m and not visited[i][j + 1]:
j += 1

# Otherwise, if the Robot can move down and the down cell has not been visited, move down.
elif i + 1 < n and not visited[i + 1][j]:
i += 1

# If the Robot cannot move in either direction, stop moving.
else:
break

# Return the minimum and maximum bonus sums.
return min_sum, max_sum


# Get the input grid from the user.
grid = [list(map(int, input().split())) for _ in range(int(input()))]

# Find the minimum and maximum bonus sums.
min_sum, max_sum = min_and_max_bonus(grid)

# Print the minimum and maximum bonus sums.
print(min_sum, max_sum)


Пример использования:

1 8 8 4
10 1 1 3
1 3 12 2
2 3 5 6


Вывод:

27 41
Иван СмердовУченик (137) 1 неделю назад
А скажи пожалуйста какой ответ в итоге?
Викторыч Мудрец (16807) 1 неделю назад
Это делается в экселе. Ищи на сайте решу егэ, там рассказывается как это делать.
Похожие вопросы