ЕГЭ по информатике 2026 · задание 18 из 27
ЕГЭ по информатике 2026, задание 18: робот и электронная таблица
Задание 18 — повышенный уровень, 1 балл. ПО нужно. Проверяют обработку целочисленных данных в электронной таблице. На практике это поле с числами и Робот, который ходит по клеткам и собирает сумму, минимум или максимум.
Файл 2026 — `.ods`. Стены и пустые клетки не пропускайте: ФИПИ отмечает, что путь часто моделируют неверно и неверно суммируют «добычу».
Конспект
Классический маршрут: из левого верхнего угла в правый нижний, ходы только вправо и вниз. Тогда значение клетки:
F[r][c] = cell[r][c] + max(F[r-1][c], F[r][c-1])
Для минимума — min. В первую клетку кладут само число, без прибавления «из ниоткуда».
В Calc это формула в соседней области или поверх копии листа. Не затирайте исходные числа, пока не скопировали их.
Если есть стены, в непроходимую клетку ставьте «минус бесконечность» для максимума, чтобы путь туда не зашёл. Не обходите стену ходом, которого нет в условии.
Варианты ходов бывают другими: только влево и вверх, или из правого нижнего угла. Направление читают до формулы. Формула «вправо и вниз» на обратном маршруте даёт чужой ответ.
Клетка старта входит в сумму, если не сказано обратное. То же с финишем.
Иногда два вопроса: максимальная сумма и число клеток на таком пути, либо сумма при обязательном проходе через клетку. Второй вопрос — два пути: старт → точка и точка → финиш. Если лучших путей несколько, дополнительное условие (минимальная длина, конкретная клетка) берут из текста.
Шаблон на Python
Сохраните лист как CSV или скопируйте числа. Нуль ниже замените на маркер стены, если в условии стена — не ноль, а пустая клетка.
grid = [
[1, 2, 3],
[4, -1, 5], # -1 пусть будет стеной
[6, 7, 8],
]
rows, cols = len(grid), len(grid[0])
INF = 10**18
F = [[-INF] * cols for _ in range(rows)]
def ok(r, c):
return 0 <= r < rows and 0 <= c < cols and grid[r][c] != -1
if ok(0, 0):
F[0][0] = grid[0][0]
for r in range(rows):
for c in range(cols):
if not ok(r, c):
continue
for pr, pc in ((r - 1, c), (r, c - 1)):
if ok(pr, pc):
F[r][c] = max(F[r][c], grid[r][c] + F[pr][pc])
print(F[-1][-1])Первая клетка не должна получить grid + (-INF). В шаблоне она задаётся отдельно, а прибавление идёт только из уже достижимых соседей. Если стартовая клетка ещё раз обновится из недостижимого соседа, ok это отсекает.
В Calc для клетки C2 при данных в A2 формула вида =A2+МАКС(B1;A2) легко ссылается не туда. Протяните на две строки и сверьте с ручным счётом угла 2×2.
Типичные ошибки
- Ход по диагонали, которого нет.
- Стена заменена нулём и по ней прошли.
- В сумму не вошёл старт или финиш.
- Максимум взят по всей таблице, а не по допустимому пути.
Попробуйте объяснить с Мишкой
Бесплатный ИИ-репетитор объяснит любую тему так, как вам понятно — шаг за шагом.
Начать бесплатно