9 мин чтения

ЕГЭ по информатике 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.

Типичные ошибки

  • Ход по диагонали, которого нет.
  • Стена заменена нулём и по ней прошли.
  • В сумму не вошёл старт или финиш.
  • Максимум взят по всей таблице, а не по допустимому пути.

Попробуйте объяснить с Мишкой

Бесплатный ИИ-репетитор объяснит любую тему так, как вам понятно — шаг за шагом.

Начать бесплатно