1. Главная
  2. Библиотека
  3. Программирование
  4. Исполнитель Робот стоит в левом верхнем углу поля, разл...
Решение задачи на тему

Исполнитель Робот стоит в левом верхнем углу поля, разлинованного на клетки. Он может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде вправо Робот перемещается в соседнюю правую клетку; по команде

  • Программирование
  • #Основы алгоритмизации и программирования
  • #Структуры и алгоритмы обработки данных
Исполнитель Робот стоит в левом верхнем углу поля, разлинованного на клетки. Он может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде вправо Робот перемещается в соседнюю правую клетку; по команде

Условие:

Исполнитель Робот стоит в левом верхнем углу поля, разлинованного на клетки. Он может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде вправо Робот перемещается в соседнюю правую клетку; по команде вниз - в соседнюю нижнюю. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может. Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100.
Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота. В «угловых» клетках поля - тех, которые справа и снизу ограничены стенами, Робот не может продолжать движение, поэтому накопленная сумма считается итоговой. Таких конечных клеток на поле может быть несколько, включая правую нижнюю клетку поля. При разных запусках итоговые накопленные суммы могут различаться. Определите максимальную и минимальную денежные суммы, среди всех возможных итоговых сумм, которые может собрать Робот, пройдя из левой верхней клетки в конечную клетку маршрута.
Исходные данные записаны в файле 18-201.xls в виде электронной таблицы, каждая ячейка которой соответствует клетке поля. В ответе запишите два числа - сначала максимальную сумму, которую может собрать Робо, затем - минимальную.

Решение:

Для решения данной задачи, нам нужно пройти по полю, представляющему собой матрицу, и найти максимальную и минимальную суммы, которые Робот может собрать, двигаясь только вправо и вниз. Давайте разберем решение шаг за шагом.

Шаг 1: Чтение данных из файла

Сначала нам нужно считать данные из файла 18-201.xls. Предположим, что мы можем извлечь данные в виде двумерного массива, где каждая ячейка содержит значение монеты.

Шаг 2: Инициализация матриц для хранения сумм

Создадим две матрицы: одну для хранения максимальных сумм, другую для минимальных. Обе матрицы будут иметь такие же размеры, как и исходная матрица с монетами.


maxsum = [[0] * cols for in range(rows)]
minsum = [[0] * cols for in range(rows)]


Шаг 3: Заполнение первой ячейки

Первая ячейка (верхний левый угол) будет равна значению монеты в этой ячейке.

Робот может двигаться только вправо в первой строке и только вниз в первом столбце.

Теперь мы будем заполнять оставшиеся ячейки, выбирая максимальные и минимальные суммы из возможных путей.

Теперь нам нужно найти максимальную и минимальную суммы в правом нижнем углу и в угловых клетках, которые не имеют возможности продолжать движение.

Теперь мы можем вывести максимальную и минимальную суммы.

Таким образом, мы получили алгоритм для нахождения максимальной и минимальной суммы, которую может собрать Робот, двигаясь по полю. Не забудьте обработать файл и извлечь данные перед выполнением этих шагов.

Не нашел нужную задачу?

Воспользуйся поиском

Выбери предмет