ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий
Тип задачи: Оптимальный маршрут по клетчатому полю.
Учебные темы: Двумерные массивы (матрицы). Алгоритмы обработки двумерных массивов: заполнение двумерного числового массива по заданным правилам, поиск элемента в двумерном массиве, вычисление максимума (минимума) и суммы элементов двумерного массива, перестановка строк и столбцов двумерного массива; Динамическое программирование как метод решения задач с сохранением промежуточных результатов. Задачи, решаемые с помощью динамического программирования: вычисление рекурсивных функций, подсчёт количества вариантов, задачи оптимизации; Анализ данных с помощью электронных таблиц. Вычисление суммы, среднего арифметического, наибольшего (наименьшего) значения диапазона. Вычисление коэффициента корреляции двух рядов данных. Построение столбчатых, линейчатых и круговых диаграмм. Построение графиков функций. Подбор линии тренда, решение задач прогнозирования. Решение задач оптимизации с помощью электронных таблиц.
Ответ: 2227 898
Решение.
Откроем приложенную электронную таблицу. Исходные числа занимают диапазон A1:T20: поле имеет размер 20 × 20. Начинаем в A1 и движемся только вправо или вниз. Число в каждой посещённой клетке, включая начало и финиш, прибавляется к сумме.
Нужно обязательно дойти до T20. Маршрут, закончившийся у стен раньше, в ответ не входит.
В исходном поле найдено 56 внутренних границ между соседними клетками, через которые проход запрещён.
Будем хранить для каждой достижимой клетки две величины: L — наименьшую сумму от A1 до неё, H — наибольшую. Для A1 обе величины равны числу в самой A1: 25.
В любую другую клетку можно прийти только из соседней слева или сверху. Переход слева разрешён, если нет стены между этими клетками; переход сверху — если нет стены над текущей клеткой. Недостижимого соседа не используем.
Если оба входа разрешены, прибавим число текущей клетки к меньшей из двух величин L и к большей из двух величин H. Если допустимый вход один, берём только его. Если нет ни одного, помечаем клетку «нет пути», а не нулём.
Это динамическое программирование: любой путь в текущую клетку заканчивается одним из допустимых входов. Поэтому выбор лучшего пути до предшественника перебирает все возможности последнего шага. Обрабатывая строки сверху вниз, а клетки в строке слева направо, получаем точные минимум и максимум для всего поля.
Для расчёта в редакторе таблиц создадим под исходными числами блок максимумов с началом в A22. В A22 введём =A1. Например, значение для B2 окажется в B23: при двух допустимых входах формула имеет вид =B2+МАКС(A23;B22). Если вход перекрыт стеной или ведёт из недостижимой клетки, соответствующую ссылку исключаем. Начальную клетку общей формулой не заменяем.
Первую строку заполняем только по входу слева, первый столбец — только по входу сверху. После каждой стены отдельно проверяем достижимость. Для минимумов создадим такой же блок, заменив МАКС на МИН и сохранив все ограничения переходов. Нельзя протянуть общую формулу через стены без исправления ссылок.
Контрольные значения начала таблицы:
| Клетка | Число | L | H |
|---|---|---|---|
| A1 | 25 | 25 | 25 |
| B1 | 17 | 42 | 42 |
| A2 | 31 | 56 | 56 |
| B2 | 41 | 83 | 97 |
Итог в единственной разрешённой конечной клетке T20:
| Финиш | Минимум | Максимум |
|---|---|---|
| T20 | 898 | 2227 |
В T20 получаем L = 898, H = 2227. Значения в других тупиках не учитываем.
Проверка. Восстановим оба оптимальных маршрута, каждый раз выбирая предшественника, давшего записанную сумму. Ниже указаны посещённые столбцы по строкам; диапазон включает оба края. Между строками спускаемся в том столбце, в котором закончился предыдущий отрезок. Знак «—» означает, что маршрут завершился раньше.
| Строка | Минимальный: столбцы | Сумма | Максимальный: столбцы | Сумма |
|---|---|---|---|---|
| 1 | A | 25 | A | 25 |
| 2 | A | 31 | A | 31 |
| 3 | A–B | 123 | A–E | 314 |
| 4 | B–D | 52 | E–O | 586 |
| 5 | D–F | 86 | O–P | 163 |
| 6 | F–G | 29 | P | 55 |
| 7 | G | 14 | P–Q | 176 |
| 8 | G | 12 | Q | 86 |
| 9 | G | 5 | Q | 94 |
| 10 | G–I | 24 | Q | 49 |
| 11 | I–M | 64 | Q | 38 |
| 12 | M | 13 | Q | 28 |
| 13 | M–O | 33 | Q | 58 |
| 14 | O | 44 | Q | 68 |
| 15 | O | 73 | Q–R | 127 |
| 16 | O–P | 68 | R | 58 |
| 17 | P | 31 | R | 68 |
| 18 | P–Q | 88 | R–T | 146 |
| 19 | Q–R | 21 | T | 42 |
| 20 | R–T | 62 | T | 15 |
| Итого | 898 | 2227 |
Все переходы этих маршрутов разрешены. Суммы чисел исходного файла дают 898 и 2227; начальная и конечная клетки учтены ровно один раз. Таблица динамического программирования доказывает, что меньшая и большая суммы невозможны.
По условию сначала записываем максимум, затем минимум.
Ответ: 2227 898.
Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINF49E2DA.
Сообщение увидит только команда сайта: на странице оно не публикуется.
Комментарии к решению
Комментарии видны всем посетителям сайта.
Комментариев пока нет. Будьте первым.
Чтобы оставить комментарий, войдите или зарегистрируйтесь.