ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий
Тип задачи: Оптимальный маршрут по клетчатому полю.
Учебные темы: Двумерные массивы (матрицы). Алгоритмы обработки двумерных массивов: заполнение двумерного числового массива по заданным правилам, поиск элемента в двумерном массиве, вычисление максимума (минимума) и суммы элементов двумерного массива, перестановка строк и столбцов двумерного массива; Динамическое программирование как метод решения задач с сохранением промежуточных результатов. Задачи, решаемые с помощью динамического программирования: вычисление рекурсивных функций, подсчёт количества вариантов, задачи оптимизации; Анализ данных с помощью электронных таблиц. Вычисление суммы, среднего арифметического, наибольшего (наименьшего) значения диапазона. Вычисление коэффициента корреляции двух рядов данных. Построение столбчатых, линейчатых и круговых диаграмм. Построение графиков функций. Подбор линии тренда, решение задач прогнозирования. Решение задач оптимизации с помощью электронных таблиц.
Ответ: 2285 993
Решение.
Откроем приложенную электронную таблицу. Исходные числа занимают диапазон A1:T20: поле имеет размер 20 × 20. Начинаем в A1 и движемся только вправо или вниз. Число в каждой посещённой клетке, включая начало и финиш, прибавляется к сумме.
Нужно обязательно дойти до T20. Маршрут, закончившийся у стен раньше, в ответ не входит.
В исходном поле найдено 56 внутренних границ между соседними клетками, через которые проход запрещён.
Будем хранить для каждой достижимой клетки две величины: L — наименьшую сумму от A1 до неё, H — наибольшую. Для A1 обе величины равны числу в самой A1: 62.
В любую другую клетку можно прийти только из соседней слева или сверху. Переход слева разрешён, если нет стены между этими клетками; переход сверху — если нет стены над текущей клеткой. Недостижимого соседа не используем.
Если оба входа разрешены, прибавим число текущей клетки к меньшей из двух величин L и к большей из двух величин H. Если допустимый вход один, берём только его. Если нет ни одного, помечаем клетку «нет пути», а не нулём.
Это динамическое программирование: любой путь в текущую клетку заканчивается одним из допустимых входов. Поэтому выбор лучшего пути до предшественника перебирает все возможности последнего шага. Обрабатывая строки сверху вниз, а клетки в строке слева направо, получаем точные минимум и максимум для всего поля.
Для расчёта в редакторе таблиц создадим под исходными числами блок максимумов с началом в A22. В A22 введём =A1. Например, значение для B2 окажется в B23: при двух допустимых входах формула имеет вид =B2+МАКС(A23;B22). Если вход перекрыт стеной или ведёт из недостижимой клетки, соответствующую ссылку исключаем. Начальную клетку общей формулой не заменяем.
Первую строку заполняем только по входу слева, первый столбец — только по входу сверху. После каждой стены отдельно проверяем достижимость. Для минимумов создадим такой же блок, заменив МАКС на МИН и сохранив все ограничения переходов. Нельзя протянуть общую формулу через стены без исправления ссылок.
Контрольные значения начала таблицы:
| Клетка | Число | L | H |
|---|---|---|---|
| A1 | 62 | 62 | 62 |
| B1 | 41 | 103 | 103 |
| A2 | 23 | 85 | 85 |
| B2 | 29 | 114 | 132 |
Итог в единственной разрешённой конечной клетке T20:
| Финиш | Минимум | Максимум |
|---|---|---|
| T20 | 993 | 2285 |
В T20 получаем L = 993, H = 2285. Значения в других тупиках не учитываем.
Проверка. Восстановим оба оптимальных маршрута, каждый раз выбирая предшественника, давшего записанную сумму. Ниже указаны посещённые столбцы по строкам; диапазон включает оба края. Между строками спускаемся в том столбце, в котором закончился предыдущий отрезок. Знак «—» означает, что маршрут завершился раньше.
| Строка | Минимальный: столбцы | Сумма | Максимальный: столбцы | Сумма |
|---|---|---|---|---|
| 1 | A | 62 | A–E | 218 |
| 2 | A | 23 | E–G | 184 |
| 3 | A | 61 | G | 76 |
| 4 | A | 18 | G–N | 532 |
| 5 | A–G | 241 | N–O | 146 |
| 6 | G | 15 | O | 52 |
| 7 | G–H | 17 | O | 69 |
| 8 | H | 5 | O | 85 |
| 9 | H | 5 | O–P | 134 |
| 10 | H | 15 | P | 63 |
| 11 | H | 11 | P | 30 |
| 12 | H–I | 12 | P | 78 |
| 13 | I | 10 | P | 57 |
| 14 | I | 30 | P | 50 |
| 15 | I–K | 112 | P–Q | 130 |
| 16 | K–N | 121 | Q–R | 88 |
| 17 | N–O | 39 | R | 72 |
| 18 | O–Q | 114 | R–T | 176 |
| 19 | Q–S | 48 | T | 29 |
| 20 | S–T | 34 | T | 16 |
| Итого | 993 | 2285 |
Все переходы этих маршрутов разрешены. Суммы чисел исходного файла дают 993 и 2285; начальная и конечная клетки учтены ровно один раз. Таблица динамического программирования доказывает, что меньшая и большая суммы невозможны.
По условию сначала записываем максимум, затем минимум.
Ответ: 2285 993.
Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINF2285C9.
Сообщение увидит только команда сайта: на странице оно не публикуется.
Комментарии к решению
Комментарии видны всем посетителям сайта.
Комментариев пока нет. Будьте первым.
Чтобы оставить комментарий, войдите или зарегистрируйтесь.