Найти тему

Задача 813. Игра в 24

Немного упрощённый вариант Задачи 155. Конденсаторы, поэтому и решать будет простой рекурсивной функцией без всяких премудростей. Читаем условие:

Условие задачи с сайта acmp.ru
Условие задачи с сайта acmp.ru

Чисел всего 4, деления нет, поэтому можно написать функцию, которая будет возвращать список со всеми числами, которые можно получить с помощью заданных арифметических операций.

Так как функция будет рекурсивной, то назовём её rec. Тогда основное решение будет очень простым:

Основное решение - считывание данных и вывод ответа
Основное решение - считывание данных и вывод ответа

Функция rec будет разделять входящий список чисел на две части во всех возможных местах и рекурсивно вызываться для каждой из них. Значит условие выхода из рекурсивной функции будет простым:

Условие выхода из рекурсии, когда список состоит из одного элемента
Условие выхода из рекурсии, когда список состоит из одного элемента

В условии задачи явно не сказано, что можно использовать унарный минус. Но тест 3 говорит об этом, поэтому для списка из одного элемента возвращаем этот элемент и его с другим знаком.

Во всех остальных случаях нам понадобится список для ответа:

Список для хранения ответа
Список для хранения ответа

Проверим все варианты разбиения входного списка на две части и вызовемся рекурсивно:

Рекурсивные вызов функции
Рекурсивные вызов функции

После этого у нас есть два списка x и y, которые хранят все числа, которые можно получить в левой и правой частях списка соответственно. Чтобы получить ответ для исходного списка, надо к каждой паре чисел из этих списков применить все три допустимые операции:

Построение итогового списка с ответом
Построение итогового списка с ответом

Вот и всё решение задачи. Как и было сказано, теперь можете попробовать решить задачу Конденсаторы.

Предыдущий выпуск: Задача 647. Адаптивный поиск

Я очень хочу, чтобы мои советы были полезны вам, а для того, чтобы быстрее всех получать новые статьи можно подписаться на мой канал.