Задание 18 ЕГЭ по информатике

Что проверяет: Динамическое программирование на поле

Задание 18 ЕГЭ по информатике проверяет тему «динамическое программирование на поле». Ниже вы найдёте 4 варианта с условием, ответом и разбором, а под ними теория и алгоритм решения этого номера.

4 варианта с ответами

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

Текст распознан с изображения задания. Формулы, таблицы и рисунки смотрите на картинке ниже.

ЕГЭ по информатике: задание 18, условие
Скачать файл
Ответ
2362 1205

Робот-сборщик начинает движение в левой верхней клетке прямоугольного поля и должен попасть в правую нижнюю. За один ход он перемещается в соседнюю клетку вправо или вниз, двигаться вверх и влево нельзя. В каждой клетке записано число монет, которые робот собирает, проходя через неё; монеты начальной и конечной клеток тоже собираются.

1325
4271
6138
2942
Определите наибольшее количество монет, которое может собрать робот.

Ответ
28

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

В первой строке и первом столбце выбора нет: туда можно попасть единственным путём, поэтому значения просто накапливаются слева направо и сверху вниз.

В любую другую клетку робот приходит либо сверху, либо слева. Берём больший из двух накопленных результатов и прибавляем число из самой клетки.

Заполнив таблицу до правого нижнего угла, получаем ответ — 28.

Робот-сборщик начинает движение в левой верхней клетке прямоугольного поля и должен попасть в правую нижнюю. За один ход он перемещается в соседнюю клетку вправо или вниз, двигаться вверх и влево нельзя. В каждой клетке записано число монет, которые робот собирает, проходя через неё; монеты начальной и конечной клеток тоже собираются.

51924
38261
72439
16523
Определите наименьшее количество монет, которое может собрать робот.

Ответ
28

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

Первая строка и первый столбец заполняются накоплением, поскольку туда ведёт ровно один путь.

Жадный подход здесь не работает: выбор наименьшего числа на каждом шаге может завести в дорогой участок дальше. Именно поэтому нужна таблица, хранящая лучший результат для каждой клетки.

Значение в правом нижнем углу и есть ответ — 28.

Робот-сборщик начинает движение в левой верхней клетке прямоугольного поля и должен попасть в правую нижнюю. За один ход он перемещается в соседнюю клетку вправо или вниз, двигаться вверх и влево нельзя. В каждой клетке записано число монет, которые робот собирает, проходя через неё; монеты начальной и конечной клеток тоже собираются.

2714
9382
1567
4231
8125
Определите наибольшее количество монет, которое может собрать робот.

Ответ
41

Поле прямоугольное, но не квадратное: это ничего не меняет, алгоритм работает для любых размеров.

Заполняем таблицу построчно: первая строка и первый столбец — простым накоплением, остальные клетки — по правилу «максимум из верхней и левой плюс своё число».

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

Ответ — 41.

Теория к заданию 18 ЕГЭ по информатике: динамическое программирование на поле

Задание с файлом: Робот идёт по таблице, собирая монеты. Нужно найти максимальную и минимальную сумму.

Что нужно знать

Динамическое программирование на таблице

Как решать задание 18

  1. Постройте таблицу того же размера для накопленных сумм.
  2. Заполните первую строку и первый столбец с учётом стен.
  3. Заполняйте остальные клетки по формуле перехода, пропуская запрещённые направления.
  4. Найдите все конечные клетки и выберите среди них экстремумы.
  5. Запишите сначала максимум, затем минимум.

Разбор примера

В таблице 2 на 2 записаны числа: верхняя строка 1 и 3, нижняя 2 и 5. Робот идёт из левой верхней клетки в правую нижнюю, двигаясь вправо и вниз, и собирает монеты. Какова максимальная сумма?

  1. В стартовой клетке накоплено 1.
  2. Правая верхняя клетка достижима только слева: 1 + 3 = 4.
  3. Левая нижняя клетка достижима только сверху: 1 + 2 = 3.
  4. Правая нижняя достижима сверху (4) или слева (3), выбираем максимум: 4.
  5. Прибавляем содержимое клетки: 4 + 5 = 9.

Ответ9

Частые ошибки

Задание 18 входит в ЕГЭ по информатике. Это единственная страница сайта, где собраны все варианты этого номера: текст условия, картинка задания, правильный ответ, разбор решения и теория с алгоритмом. Остальные номера открываются в списке выше, а их перечень с темами есть в списке заданий ЕГЭ по информатике.