ЕГЭ
Информатика
13 марта 2026
19 минут чтения

Задание 18 ЕГЭ по информатике: Робот, монеты и электронные таблицы

Задание 18 ЕГЭ по информатике (КЕГЭ) — это файл электронной таблицы размером N×N, по которому Робот ходит только вправо и вниз, собирая монеты, а вам нужно найти максимальную и минимальную суммы за весь путь. Это задание повышенного уровня сложности, за него дают 1 первичный балл, ответ — два числа в двух ячейках таблицы, и на компьютере обязательно должен быть открыт редактор электронных таблиц — файл прикладывается прямо к варианту. Раздел кодификатора — «Табличные (реляционные) базы данных», проверяемый элемент содержания 4.5. В статье — метод динамического программирования по таблице, готовые формулы для LibreOffice Calc и Excel, приём с −∞/+∞ для стен, рабочее решение на Python и три разбора реальных заданий из открытого банка ФИПИ с проверенными ответами. Потренироваться можно на реальных заданиях 18 ЕГЭ по информатике онлайн — с мгновенной проверкой ответа.


Что проверяет задание 18 ЕГЭ по информатике

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

Проверяемые умения (КЭС 4.5, требование 2.13):

  • открывать файл электронной таблицы формата .ods и ориентироваться в квадратной таблице N×N;
  • строить формулу, которая для каждой ячейки берёт лучший из двух результатов — «сверху» и «слева» — и прибавляет к нему значение самой ячейки;
  • протягивать одну формулу на весь диапазон и получать сразу все промежуточные суммы, не считая путь вручную;
  • обрабатывать «стены» между клетками — запрещённые переходы, которые нельзя учитывать в формуле максимума и минимума;
  • при необходимости решать ту же задачу программой на Python — тоже допустимый способ и хорошая проверка результата.

Проекты КИМ ЕГЭ-2027 ФИПИ публикует в конце августа 2026 года, финальные версии — в ноябре. Все цифры в статье приведены по действующей спецификации 2026 года: структура работы не менялась с 2025 года.

ПараметрЗначение
Максимальный балл1 первичный. Частичного зачёта здесь нет — среди 27 заданий КЕГЭ частичный зачёт (1 балл из 2) возможен только на заданиях 26 и 27, а на 18-м ответ либо полностью совпадает с эталоном, либо задание оценивается в 0
Уровень сложностиПовышенный (П) — одно из 11 заданий этого уровня во всей работе
КЭС4.5 «Табличные (реляционные) базы данных»
Код проверяемого требования2.13
Форма ответаДва числа в двух ячейках таблицы ответов — сначала одно число, затем второе (порядок задаёт формулировка конкретного варианта, читайте её до конца)
Нужен файл и спец. ПОДа. К заданию приложен файл *.ods, на компьютере обязательно должен быть открыт редактор электронных таблиц (LibreOffice Calc или аналог)
Рекомендуемое время8 минут (примерное время выполнения задания по обобщённому плану ФИПИ)
Связанные заданияЗадание 9 (тот же тип файла и редактор, но один числовой ответ и таблица без стен), задание 3 (тот же КЭС 4.5, но реляционные базы данных), задание 17 (тоже два числа в двух ячейках, но обработка последовательности из файла *.txt)

Тренируйтесь на реальных файлах

Задания ЕГЭ по информатике из открытого банка ФИПИ с приложенными файлами и мгновенной проверкой ответа — бесплатно.

Решать задание 18

Как выглядит формулировка

Сюжет задания 18 почти не меняется от варианта к варианту: квадрат N×N клеток, Робот, который ходит только вправо и вниз, монеты в клетках и вопрос про максимальную и минимальную денежную сумму. Вот реальные формулировки из открытого банка ФИПИ:

  • «Квадрат разлинован на N×N клеток (1 < N < 30). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. […] Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может. […] Определите максимальную и минимальную денежные суммы, которые может собрать Робот, пройдя из левой верхней клетки в правую нижнюю. В ответе укажите два числа — сначала максимальную сумму, затем минимальную.»
  • «При попытке выхода за границу квадрата Робот разрушается. […] В ответ запишите два числа друг за другом без разделительных знаков — сначала максимальную сумму, затем минимальную.» — вариант без внутренних стен вообще: границей служит сам край квадрата.
  • «Определите минимальную и максимальную денежные суммы, которые может собрать Робот, пройдя из левой верхней клетки в правую нижнюю. В ответе укажите два числа — сначала минимальную сумму, затем максимальную.» — здесь порядок чисел в ответе обратный предыдущему.
  • «В «угловых» клетках поля — тех, которые справа и снизу ограничены стенами, Робот не может продолжать движение, поэтому накопленная сумма считается итоговой. Таких конечных клеток на поле может быть несколько, включая правую нижнюю клетку поля. […] Определите максимальную и минимальную денежные суммы среди всех возможных итоговых сумм, которые может собрать Робот, пройдя из левой верхней клетки в конечную клетку маршрута.» — усложнённый подтип: финиш не фиксирован.

Как записывается ответ. Ответ на задание 18 — это два числа в двух ячейках таблицы ответов, а не одно число через пробел. Какое число идёт первым — максимум или минимум, — решает формулировка конкретного варианта: в банке встречаются оба порядка, и оба раза они прямо прописаны в последнем предложении условия. Частичного зачёта на этом задании нет: если числа стоят не в том порядке или хотя бы одно из них неверно, начисляется 0 баллов. Это отличает задание 18 от заданий 26 и 27, где частичный зачёт (1 балл из 2) прямо предусмотрен системой оценивания — на 18-м такого послабления нет вообще, здесь ровно 1 балл «всё или ничего».

Теория: всё, что нужно для задания 18

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

Робот входит в клетку только с двух сторон — сверху или слева (движение только «вправо» и «вниз»). Значит, лучший результат для клетки полностью определяется лучшими результатами двух её соседей — сверху и слева — плюс монета в самой клетке. Это и есть динамическое программирование: обходим клетки в порядке «строка за строкой, слева направо», и к моменту, когда дошли до клетки, оба её «поставщика» уже посчитаны.

Обозначения. Пусть aija_{ij} — номинал монеты в клетке (i, j), MijM_{ij} — максимальная накопленная сумма при входе в эту клетку, mijm_{ij} — минимальная.

Базовый случай. В левой верхней клетке Робот берёт только свою монету:

M11=m11=a11M_{11} = m_{11} = a_{11}

Первая строка и первый столбец. В них есть только один возможный «поставщик» — сосед слева (в строке) или сосед сверху (в столбце), потому что дойти по-другому до края таблицы нельзя:

M1j=M1,j1+a1j,Mi1=Mi1,1+ai1M_{1j} = M_{1,j-1} + a_{1j}, \qquad M_{i1} = M_{i-1,1} + a_{i1}

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

Общий случай (главная формула задания). Для любой другой клетки:

Mij=max(Mi1,j,  Mi,j1)+aijM_{ij} = \max(M_{i-1,j},\; M_{i,j-1}) + a_{ij}
mij=min(mi1,j,  mi,j1)+aijm_{ij} = \min(m_{i-1,j},\; m_{i,j-1}) + a_{ij}

Ровно эти две формулы вы наберёте в электронной таблице — смотрите следующий блок.

Маленький пример целиком (без стен, 4×4)

Возьмём типовые вводные данные, которые ФИПИ приводит в самом условии задания 18 как образец:

1884
10113
13122
2356

Таблица максимумов (заполняем по формуле выше):

 1   9  17  21
11  12  18  24
12  15  30  32
14  18  35  41

Таблица минимумов:

 1   9  17  21
11  10  11  14
12  13  23  16
14  16  21  22

Число в правой нижней клетке — это и есть ответ на весь путь: максимум 41, минимум 22.

Проверка: путь максимума восстанавливается по таблице MM «от конца к началу» — это клетки (1, 8, 8, 1, 12, 5, 6), то есть маршрут вправо-вправо-вниз-вниз- вниз-вправо, и 1+8+8+1+12+5+6=411+8+8+1+12+5+6=41. На учебном поле 4×4 такой путь ещё можно перебрать руками, но на реальном экзаменационном поле 20×20 перебор невозможен, а таблица MM и mm даёт верный ответ без единого перебора.

Как это набирается в LibreOffice Calc

Открытый файл *.ods — это и есть таблица aa: ячейка A1 — клетка (1,1), ячейка B2 — клетка (2,2) и так далее. Формулу максимума и минимума удобнее всего строить на двух отдельных листах, чтобы не смешивать вычисления.

Шаг 1. Лист «Максимум» — первая строка и первый столбец

Скопируйте исходную таблицу на новый лист. В ячейке первой строки, кроме самой первой, поставьте сумму с соседом слева: в B1 — формула =A1+B_исходная (то есть значение предыдущей накопленной ячейки плюс своя монета). Аналогично заполните первый столбец через соседа сверху. Проще всего держать исходные монеты и накопленные суммы на разных листах и в формуле накопленной суммы ссылаться на монету с другого листа.

Шаг 2. Главная формула — на пересечении строк и столбцов

Для клетки, у которой есть и «сосед сверху», и «сосед слева», формула максимума выглядит так (пример для ячейки B2, где A2 — сосед слева, B1 — сосед сверху, а сама монета лежит вМонеты.B2):

=МАКС(A2;B1)+Монеты.B2

По-английски (если у вас Excel или английская локаль LibreOffice) та же формула:

=MAX(A2,B1)+Coins.B2

Наберите эту формулу один раз в клетке (2,2) и протяните её сразу вправо до последнего столбца и вниз до последней строки — благодаря относительным ссылкам A2 и B1 формула сама «съедет» на нужные соседние ячейки в каждой клетке диапазона.

Шаг 3. Второй лист — для минимума

Скопируйте лист с максимумом, замените МАКС на МИН (или MAX на MIN) во всех формулах и в базовом случае и в первой строке/столбце. Ответом на задание будут числа в правой нижней ячейке каждого из двух листов — но только если на поле нет стен (следующий блок) и финиш всегда один — правая нижняя клетка.

Такой способ быстрее ручного счёта в разы: таблица 20×20 — это 400 ячеек, а формулу вы набираете и протягиваете один раз.

Стены между клетками: приём с −∞ и +∞

В реальном задании 18 квадрат почти всегда разбит внутренними стенами — толстыми линиями между соседними клетками. Сквозь стену Робот не проходит, а значит, при заполнении клетки нельзя учитывать соседа, отгороженного стеной — даже если формально он «сверху» или «слева».

Идея приёма

Проще всего не городить сложные условные формулы для каждой отдельной стены, а подставить вместо запрещённого соседа заведомо «проигрышное» число: для таблицы максимума — очень маленькое (например, −1 000 000), для таблицы минимума — очень большое (например, 1 000 000). Тогда МАКС сам никогда не выберет клетку за стеной как источник максимума, а МИН — как источник минимума. Это и есть работающий аналог «минус бесконечности» и «плюс бесконечности» в конечной таблице чисел.

Как это выглядит в формуле

Если между клеткой (2,2) и её соседом сверху — (1,2) — стоит стена, замените ссылку на B1 условием:

=МАКС(A2; ЕСЛИ(есть_стена_сверху; -1000000; B1)) + Монеты.B2

На практике «есть_стена_сверху» — это не отдельная формула, а ваша ручная разметка: стены на рисунке распознаются по утолщённым линиям, поэтому перед расчётом стоит один раз выписать их список (строка/столбец, куда стена запрещает идти) и уже по этому списку решать, какую из двух ссылок в формуле МАКС/МИН заменить на −1 000 000 или 1 000 000.

Важная тонкость: угловые клетки без выхода

В некоторых вариантах банка стены расставлены так, что у клетки заблокированы и правый, и нижний выход — Робот дальше идти не может, и накопленная в ней сумма считается одним из возможных «итоговых» результатов. Такие клетки называют угловыми, и в отдельных вариантах задания финишем объявляется не обязательно правая нижняя клетка, а любая угловая — тогда среди всех накопленных в угловых клетках сумм нужно искать максимум и минимум отдельно. Это редкий, но реальный подтип — разбор такого варианта есть в примерах ниже.

Тот же приём с большим/малым числом работает и в Python: вместо условных проверок «можно ли сюда попасть» проще инициализировать недостижимые клетки значением float("-inf") и float("inf") — тогда max и min сами отбросят непроходимые пути.

Решение на Python

Та же логика на Python считает оба ответа за один проход по таблице. Сначала скопируйте числа из открытого файла в текстовый файл 18.txt (числа через пробел, по строке на каждый ряд квадрата), затем опишите стены как два булевых массива и запустите расчёт:

a = [[int(x) for x in line.split()] for line in open("18.txt")]
n = len(a)

wall_right = [[False] * n for _ in range(n)]
wall_down = [[False] * n for _ in range(n)]


def solve(a, wall_right, wall_down):
    n = len(a)
    INF = float("inf")
    mx = [[-INF] * n for _ in range(n)]
    mn = [[INF] * n for _ in range(n)]
    mx[0][0] = mn[0][0] = a[0][0]
    for i in range(n):
        for j in range(n):
            if i == 0 and j == 0:
                continue
            best_mx, best_mn = -INF, INF
            if i > 0 and not wall_down[i - 1][j]:
                best_mx = max(best_mx, mx[i - 1][j])
                best_mn = min(best_mn, mn[i - 1][j])
            if j > 0 and not wall_right[i][j - 1]:
                best_mx = max(best_mx, mx[i][j - 1])
                best_mn = min(best_mn, mn[i][j - 1])
            mx[i][j] = best_mx + a[i][j]
            mn[i][j] = best_mn + a[i][j]
    return mx[n - 1][n - 1], mn[n - 1][n - 1]


best_max, best_min = solve(a, wall_right, wall_down)
print(best_max, best_min)

На нашем учебном поле 4×4 без стен эта программа печатает 41 22 — те же числа, что и ручной расчёт по таблицам MM и mm выше. wall_right[i][j] означает «стена между клеткой (i, j) и клеткой (i, j + 1)», wall_down[i][j] — «стена между клеткой (i, j) и клеткой (i + 1, j)»; их достаточно заполнить True по списку стен, который вы сняли с рисунка, — и функция сама учтёт запрет на переход, ни разу не подставляя условную бесконечность напрямую в клетки.

Для подтипа с несколькими «угловыми» финишами (описан в блоке про стены) вместо return mx[n - 1][n - 1], mn[n - 1][n - 1] переберите все клетки, у которых и справа, и снизу — стена или край поля, и возьмите максимум и минимум уже среди них:

best_max, best_min = -INF, INF
for i in range(n):
    for j in range(n):
        right_blocked = j == n - 1 or wall_right[i][j]
        down_blocked = i == n - 1 or wall_down[i][j]
        if right_blocked and down_blocked:
            best_max = max(best_max, mx[i][j])
            best_min = min(best_min, mn[i][j])

Алгоритм решения задания 18

  1. Дочитайте условие до конца. Найдите фразу «сначала … затем …» и выпишите, какое число идёт первым в ответе — максимум или минимум. Проверьте, не относится ли ваш вариант к подтипу с несколькими угловыми финишами.
  2. Откройте файл *.ods в редакторе электронных таблиц и найдите на рисунке или в описании варианта все внутренние стены — отметьте, между какими строками и столбцами они стоят.
  3. Постройте два листа-помощника — «Максимум» и «Минимум» — с той же сеткой N×N, что и исходная таблица монет.
  4. Заполните базовый случай, первую строку и первый столбец: каждая следующая ячейка получает сумму предыдущей накопленной ячейки и своей монеты.
  5. Наберите главную формулу =МАКС(сверху;слева)+монета и =МИН(сверху;слева)+монета — в первой «внутренней» клетке и протяните на весь оставшийся диапазон.
  6. Обработайте стены: там, где стена запрещает переход, замените соответствующую ссылку в формуле на заведомо «проигрышное» число (−1 000 000 для максимума, 1 000 000 для минимума).
  7. Считайте ответ и запишите числа в верном порядке. Если финиш один — берите правую нижнюю ячейку обоих листов; если финишей несколько — найдите наибольшее и наименьшее число среди всех угловых клеток. Впишите два числа в бланк в том порядке, который требует формулировка.

Доведите приём до автоматизма

Прорешайте несколько файлов подряд — расстановка формул по таблице займёт считаные минуты. Задания ЕГЭ по информатике из банка ФИПИ с проверкой ответа — на Repet.ai.

Открыть тренажёр

Примеры с разбором

Все три задания ниже — из открытого банка ФИПИ, с приложенным файлом *.ods. Ответы проверены независимо: файлы открыты, стены распознаны по утолщённым границам ячеек, суммы посчитаны программой по формулам из этой статьи и сверены с эталоном банка.

Пример 1. Поле 20×20 со стенами, обычный порядок ответа

Условие (реальное задание из открытого банка ФИПИ):

Квадрат разлинован на N×N клеток (1 < N < 30). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. […] Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может. Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. […] Определите максимальную и минимальную денежные суммы, которые может собрать Робот, пройдя из левой верхней клетки в правую нижнюю. В ответе укажите два числа — сначала максимальную сумму, затем минимальную.

Решение:

Приложенный файл содержит поле 20×20. Внутренние стены (вертикальные — запрещают идти вправо, стоят между указанными столбцами по всем строкам из диапазона):

между столбцами  2 и  3 — в строках  2–8
между столбцами  4 и  5 — в строках  5–13
между столбцами  6 и  7 — в строках 10–18
между столбцами  9 и 10 — в строках  2–9
между столбцами 12 и 13 — в строках  6–14
между столбцами 15 и 16 — в строках  9–18

Горизонтальные стены (запрещают идти вниз):

между строками  2 и  3 — в столбцах  4–8
между строками 17 и 18 — в столбцах  9–14

Заполняем два листа — «Максимум» и «Минимум» — формулами =МАКС(сверху;слева)+монета и =МИН(сверху;слева)+монета, а на каждой из перечисленных стен подменяем запрещённую ссылку на −1 000 000 (лист максимума) или 1 000 000 (лист минимума). Финиш здесь один — правая нижняя клетка (20, 20), поэтому ответ — числа в её ячейке на обоих листах.

Ответ: 1099 1026. Это эталон открытого банка ФИПИ к данному заданию.

Проверка здравым смыслом: в каждой клетке лежит монета от 1 до 100, путь состоит из 39 клеток (2·20 − 1), значит теоретический минимум пути — не меньше 39 (по одной монете минимального номинала на клетку), а максимум — не больше 3900. Оба числа, 1099 и 1026, лежат в этом диапазоне и отличаются друг от друга всего на 73 — это ожидаемо: стены разбивают поле так, что почти любой путь идёт через одни и те же «узкие места», а расходятся маршруты лишь на нескольких клетках.

Пример 2. Тот же метод, но порядок ответа обратный

Условие (реальное задание из открытого банка ФИПИ):

Квадрат разлинован на N×N клеток (1 < N < 20). […] Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может. […] Определите минимальную и максимальную денежные суммы, которые может собрать Робот, пройдя из левой верхней клетки в правую нижнюю. В ответе укажите два числа — сначала минимальную сумму, затем максимальную.

Решение:

Поле здесь 16×16, и в нём всего одна внутренняя стена — горизонтальная, между строками 6 и 7, в столбцах 5–10. Метод не меняется ни на шаг: заполняем лист максимума и лист минимума теми же формулами, а на найденной стене подменяем ссылку «сверху» большим или малым числом только для клеток из этого диапазона столбцов.

Считаем: правая нижняя клетка (16, 16) даёт M=758M = 758 и m=518m = 518. Но формулировка требует записать сначала минимальную сумму, затем максимальную — порядок здесь противоположный тому, что был в примере 1.

Ответ: 518 758. Это эталон открытого банка ФИПИ. Если бы вы, по привычке из предыдущего примера, записали «758 518» — задание было бы оценено в 0 баллов, хотя обе суммы посчитаны верно: числа стоят не в том порядке, который требует условие, а частичного зачёта на 18-м задании нет.

Вывод практический: каждый раз перечитывайте, какое слово стоит первым — «минимальную» или «максимальную» — в предложении «Определите … и … денежные суммы», и в точности это же слово должно оказаться первым и в фразе «В ответе укажите два числа — сначала …».

Пример 3. Финиш — не только правая нижняя клетка

Условие (реальное задание из открытого банка ФИПИ):

[…] Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может. […] В «угловых» клетках поля — тех, которые справа и снизу ограничены стенами, Робот не может продолжать движение, поэтому накопленная сумма считается итоговой. Таких конечных клеток на поле может быть несколько, включая правую нижнюю клетку поля. При разных запусках итоговые накопленные суммы могут различаться. Определите максимальную и минимальную денежные суммы среди всех возможных итоговых сумм, которые может собрать Робот, пройдя из левой верхней клетки в конечную клетку маршрута. В ответе укажите два числа — сначала максимальную сумму, затем минимальную.

Решение:

Это тот самый усложнённый подтип из блока про стены. Поле — 20×20, стены расставлены так, что «угловых» клеток (заблокированных и справа, и снизу) получается пять, а не одна:

Конечная клетка (строка, столбец)МаксимумМинимум
(11, 12)1431870
(16, 4)1173820
(18, 17)22521369
(19, 7)1566947
(20, 20)22551577

Таблицы максимума и минимума считаются ровно теми же формулами, что и раньше — разница только в последнем шаге: вместо того чтобы сразу взять правую нижнюю клетку, нужно найти все клетки, у которых и справа, и снизу — стена или край поля, и выбрать наибольшее число из столбца «Максимум» и наименьшее — из столбца «Минимум» по всей этой таблице.

Наибольшая из пяти итоговых сумм — 2255 (клетка (20, 20), она же правая нижняя), а наименьшая — 820, и это не клетка (20, 20), а клетка в 16-й строке и 4-м столбце.

Ответ: 2255 820. Это эталон открытого банка ФИПИ.

Главная ловушка этого подтипа — остановиться на правой нижней клетке, не заметив, что она не единственный финиш: если бы вы взяли только (20, 20), максимум совпал бы (2255), а минимум вышел бы 1577 вместо верных 820 — ответ на первый взгляд «разумный», но неверный.

Типичные ошибки и ловушки

Перепутали порядок «максимум — минимум» в ответе

Самая частая ошибка на этом задании. Формулировки в банке встречаются в обоих порядках: «сначала максимальную, затем минимальную» и «сначала минимальную, затем максимальную». Числа посчитаны верно, но записаны не в том порядке — задание оценивается в 0 баллов, частичного зачёта нет.

Перепутали направления «вправо» и «вниз»

В формуле =МАКС(сверху;слева)+монета ссылку на клетку сверху по ошибке ставят на клетку снизу (или слева — на клетку справа). Формула на первый взгляд считается без ошибок, но использует ещё не заполненные ячейки как источник — итог получается случайным числом, а не накопленной суммой.

Не заметили внутреннюю стену

Стена — это утолщённая граница между двумя ячейками таблицы, а не отдельный символ или число. Если её пропустить, формула МАКС/МИН учтёт путь, которого на самом деле не существует, и оба ответа окажутся завышены (для максимума) или занижены (для минимума) относительно настоящих.

Забыли заполнить первую строку и первый столбец отдельно

Если сразу протянуть общую формулу =МАКС(сверху;слева)+монета на первую строку, она попытается взять ячейку «сверху», которой не существует, и выдаст ошибку. Первую строку и первый столбец нужно заполнить отдельной, более простой формулой — суммой с единственным соседом.

Использовали 0 вместо −∞/+∞ для запрещённого перехода

Если вместо −1 000 000 подставить 0, формула МАКС иногда всё равно выберет «запрещённого соседа», если накопленная сумма там случайно оказалась маленькой, но положительной. Число должно быть заведомо меньше (для максимума) или больше (для минимума) любой реально достижимой суммы на поле.

Считали, что финиш всегда один — правая нижняя клетка

В части вариантов финишем объявляется любая «угловая» клетка — заблокированная и справа, и снизу, — а таких клеток на поле может быть несколько. В этом подтипе нужно перебрать все угловые клетки и взять максимум и минимум уже среди них, а не ограничиваться правым нижним углом.

Не пересчитали начальную и конечную клетки

Монета в стартовой клетке и монета в финишной клетке засчитываются наравне со всеми остальными — Робот забирает их «с собой». Формула M11=m11=a11M_{11} = m_{11} = a_{11} уже это учитывает, но при ручной проверке маршрута их иногда забывают прибавить.

Как задание 18 связано с остальным экзаменом

Всего в КЕГЭ по информатике 27 заданий, все — с кратким ответом, максимальный первичный балл за всю работу — 29, время работы — 235 минут. Задание 18 занимает в этой конструкции особое место:

  • оно входит в раздел «Информационные технологии» — 5 заданий и 6 первичных баллов на всю работу;
  • делит формат «файл + редактор электронных таблиц» с заданием 9 — но там таблица без стен и ответ состоит из одного числа, а здесь нужна полноценная динамическая формула и два числа сразу;
  • делит код кодификатора 4.5 с заданием 3 — там тоже электронная таблица, но задача про реляционные базы данных и поиск по условиям, а не про накопление сумм по путям;
  • вместе с заданием 17 и заданием 26 входит в короткий список заданий, где ответ — не одно число, а несколько чисел в отдельных ячейках таблицы ответов;
  • сама идея «лучшее из двух соседей плюс своё значение» — это классическое динамическое программирование по сетке, тот же принцип встречается в задачах на олимпиадное программирование и в вузовских курсах алгоритмов.

План подготовки на 2 недели

Неделя 1 — ставим метод

День 1–2: разберите динамическое программирование на маленьких полях 4×4 и 5×5 без стен — заполните таблицы MM и mm вручную на бумаге, проверяя каждую клетку формулой из этой статьи. День 3–4: перенесите тот же расчёт в LibreOffice Calc: наберите формулу =МАКС(сверху;слева)+монета один раз и протяните её на весь диапазон — почувствуйте разницу в скорости. День 5–7: возьмите реальные файлы из тренажёра и добавьте внутренние стены — потренируйтесь распознавать их на утолщённых границах ячеек и подставлять −1 000 000 / 1 000 000 в нужные формулы.

Неделя 2 — порядок ответа и редкие подтипы

День 1–3: решите подряд 8–10 заданий из банка, каждый раз явно выписывая на черновик: «первым в ответе идёт ___». Это снимает главную ловушку задания — перепутанный порядок чисел. День 4–5: разберите подтип с несколькими угловыми финишами — потренируйтесь находить все клетки, заблокированные и справа, и снизу, и выбирать максимум и минимум уже среди них. День 6–7: напишите решение на Python и сверьте его с ответом из таблицы — это надёжная взаимная проверка перед экзаменом. Закрепите всё в тренажёре на заданиях из банка ФИПИ.

Проверьте себя на реальных файлах

На Repet.ai собраны задания ЕГЭ по информатике из открытого банка ФИПИ с приложенными файлами. Решайте онлайн, проверяйте ответ мгновенно — бесплатно.

Перейти к практике
Частые вопросы

Часто задаваемые вопросы

Умение обрабатывать целочисленные данные в электронной таблице методом динамического программирования по сетке. К заданию приложен файл *.ods с полем N×N, по которому Робот ходит только вправо и вниз, собирая монеты; нужно найти максимальную и минимальную суммы за весь путь. В кодификаторе это элемент содержания 4.5, код требования 2.13.

1 первичный балл по принципу «всё или ничего»: частичного зачёта на этом задании нет — он предусмотрен только для заданий 26 и 27. Ответ — два числа в двух ячейках таблицы ответов, порядок (максимум-минимум или минимум-максимум) определяется формулировкой конкретного варианта. По обобщённому плану ФИПИ на задание отводится примерно 8 минут.

Методом динамического программирования: значение каждой клетки равно её монете плюс лучшее (максимум или минимум) из значений соседей сверху и слева. В LibreOffice Calc это формула =МАКС(сверху;слева)+монета для максимума и =МИН(сверху;слева)+монета для минимума, набранная один раз и протянутая на весь диапазон. Первую строку и первый столбец нужно заполнить отдельно — у них только один сосед.

Проще всего подменить ссылку на клетку за стеной заведомо «проигрышным» числом: −1 000 000 в формуле максимума (МАКС никогда его не выберет) и 1 000 000 в формуле минимума (МИН его тоже отбросит). Это рабочий аналог математической −∞ и +∞ в конечной таблице чисел, и точно так же работает в программе на Python через float("-inf") и float("inf").

Нет, не во всех вариантах. Есть подтип, где финишем считается любая «угловая» клетка — заблокированная стенами и справа, и снизу, — а таких клеток на поле может быть несколько, включая саму правую нижнюю. В этом подтипе нужно посчитать накопленные суммы во всех угловых клетках и выбрать наибольшую и наименьшую уже среди них.

Система оценивания ФИПИ прямо разделяет задания 1–25 и задания 26–27: для первых действует правило «ответ полностью совпадает с эталоном — 1 балл, иначе 0», а частичный зачёт (1 балл из 2 при одной верной части ответа) описан только для заданий 26 и 27. Задание 18 входит в первую группу, поэтому здесь любое отклонение — хотя бы в порядке чисел — даёт 0 баллов.

Да, это равноценный способ, если на экзамене вам удобнее работать в среде программирования. Логика та же: читаете таблицу построчно, заводите два двумерных массива для максимума и минимума, заполняете базовый случай, первую строку и столбец, а затем — общую формулу с проверкой стен, используя float("-inf") и float("inf") для запрещённых переходов.

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


Готовы взять балл повышенного уровня?

Задание 18 решается одной и той же формулой независимо от размера поля: лучшее из соседей плюс своя монета. Отработайте приём на реальных файлах из открытого банка ФИПИ с мгновенной проверкой ответа — и порядок чисел в ответе перестанет быть лотереей.