Рекурсию используют тогда, когда алгоритм решения задачи совпадает с алгоритмом решения подзадачи (части).
У нас как раз такой случай. Нам нужно сделать полный перебор всех вариантов и выбрать из них лучший.
Напомню, рекурсия пишется по следующему принципу:
а) условие выхода/окончания рекурсии
б) у
Ресторан(10)
- 32
Недоступна
Комментарии (267)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Михаил
12 марта, 11:23
Надеюсь, сэкономит кому-то время.
Долго не мог понять как выполнить проверку требования. - "В набор должны отбираться только ролики с положительным числом показов.". (учитывая что поле hits у нас приватное и геттера нет).
Как оказалось в задании авторы забыли упомянуть что можно создавать еще нужные вспомогательные методы в классе Advertisment.
0
Евгений
8 марта, 10:42
Тот случай, когда неделю решал задачу и вот вроде всё готово, но.... Выведи строку
и твой мозг просто уже отказывается это обрабатывать... Блин, почему 277? Почему не 0.277? Задача итак попила кровушки... Короче никаких String.format или substring не нужно. Просто переопределите toString в классе Advertisement:
0
Alexey
23 февраля, 15:19
Мега сложная и одновременно интересная задача с необходимостью изучения методов решения задачи про рюкзак с динамическим программированием, жадным алгоритмом и полным перебором.
Валидатор - бяка! Рисовал всё красным из-за toString()-a. Будьте внимательны!
Всем удачи!
0
Виталий
11 февраля, 17:20
На попытки решить задачу потратил 3 дня, решил методом "рюкзака" про который многократно упоминалось в комментариях. Но при этом решении был верный вывод, но валидатор даже не проверял ее, говорил что слишком долго. Вычитал в комментариях, что в рекурсивный метод можно отправлять не весь список, а предварительно отобрав из него только те ролики которые вписываются по времени и у которых остались показы. и таким образом валидатор дал добро. Но в комментариях встречал мнения( если я верно понял) что при подобном решении валидатор будет снова не доволен на 16 задаче. Будем проверять
0
Алексей Терешин
22 января, 19:40
Самое сложное в этой задаче понять что необходимо сделать
я создавал самый выгодный список один и все прошло
ошибка была выводил 0,277 , а надо было 277 из за этого первые 5 пунктов валидации не проходило
0
LuneFox богатый программист в далёких мечтах Expert
25 ноября 2021, 16:20
Хм... сделал, закрыв не совсем все условия, но валидатор принял.
0) Создаю в классе список, который будет хранить ролики для показа.
1) Пишу компаратор, который выводит сначала самые оплачиваемые ролики.
2) Пишу метод, который делает следующее:
- сортирует список из хранилища по компаратору
- для каждого видео в списке, если оно умещается по времени, а также имеет положительное количество оставшихся просмотров и ещё не находится в списке для показа, добавляю его в список роликов для показа, также добавляю в свежесозданный вспомогательный список
- если в конце работы метода вспомогательный список не пустой, рекурсивно вызываю этот же метод - когда больше никакие ролики не подойдут, вспомогательный список окажется пустым и метод завершится
3) Сортирую получившийся список на показ ещё раз по тому же самому компаратору.
Сдал с 3-й попытки - в первый раз забыл убрать временную строчку, которую выводил в консоль, второй раз забыл не показывать видео, число оплаченных просмотров которых закончилось.
+2
Valerii
20 ноября 2021, 22:50
Для понимания того как решать такие задачи очень помогло это видео
Видео
Там есть ссылка на гит и решение всяких разных похожих задач.
0
Лейтенант Ден
17 ноября 2021, 11:16

0
Максим Дудин
27 октября 2021, 17:07
решил в меру понятия, проверил по мере возможности на соответствие всем требованиям, всё как в выводе.
Гарантировано не прошёл валидацию... скопировал готовое решение (иначе это уже всё слишком на долго затягивается 2,5 недели)
ну вот разве что надо будет всё таки в готово решении разобраться что и почему как
0
RFedorenkov
28 октября 2021, 18:47
Совет
Если копируешь готовое решение, то на последнем уровне сбрось прогресс и попробуй решить задачу самому, пусть даже через пару месяцев. Она не очень сложная.
p.s. дальше хуже будет)))) особенно на стажировке (думаю забить до следующей)
+1
Damir
8 февраля, 01:20
У меня и готовое решение не принимает(((
0
Evgeny
29 сентября 2021, 07:48
Получилось по принципу "рюкзака"! Комментарий Maxim Dimitrov помог не улетать в тайм-аут при проверке!
0