Ресторан(10)

  • 15
  • Недоступна
Рекурсию используют тогда, когда алгоритм решения задачи совпадает с алгоритмом решения подзадачи (части). У нас как раз такой случай. Нам нужно сделать полный перебор всех вариантов и выбрать из них лучший. Напомню, рекурсия пишется по следующему принципу: а) условие выхода/окончания рекурсии б) у
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (102)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Михаил Голубцов39 уровень, Санкт-Петербург
9 часов назад
У меня не проходило по пункту "В набор должны отбираться только ролики с положительным числом показов." при том, что я отбирал только с положительным, помогло в конструкторе Advertisement сделать проверку что hits не ноль. Ну как так?
amountPerOneDisplaying = hits == 0 ? 0 : initialAmount / hits;
--------------------------------- Вы решили задачу лучше, чем 37% учеников. Вам удалось ее решить с 8 попытки. Среднее количество попыток для этой задачи 10.07. Всего эту задачу решили 1738 учеников. 19 Ноября 2018
8 ноября, 01:34
Я ее таки решил ... Это было долго, даже не так ДОООЛГО скорее, всем кому хочется решить "рюкзак" aka "ранец" в помощь. От себя скажу что некоторые условия типа длинны списка показа при прочем равном и количество роликов в показе пришлось дописать в условие выбора лучшего списка. Научился решать "рюкзак" раньше не умел
Вечный Воитель29 уровень, Москва
7 ноября, 20:27
Господа, что я сделал не так, почему таймаут, прошу помощи ппц как. Это уже дело чести для меня понять где я накосячил в алгоритме: https://javarush.ru/help/12091
Vlad S35 уровень
31 октября, 07:42
Вроде бы как самое лаконичное решение, умещается в 13 строк, без рекурсии (валидатор ее не требует, да и объективно она тут только усложняет все) и точно не требует правки до конца задачи: 1) отбираем рекламу с ненулевым количеством показов в отдельный список; 2) сортируем (я делал в одну строку с помощью list.sort(Comparator.comparingLong(...).thenComparingInt(...))) и переворачиваем список; 3) в цикле добавляем подходящие по длительности ролики из этого списка в новый, каждый раз отнимая длительность ролика от выделенного времени и проверяя что оно осталось; 4) выводим получившийся список в консоль. Создавать новый список в пункте 3 в этой задаче в принципе не нужно, можно сразу выводить, но потом все равно понадобится отдельный список.
Евгений Скид32 уровень
22 октября, 20:07
Скиньте рабочий вариант класса с решением рекурсией. Чувствую, что еще долго могу здесь просидеть. Только не самоделку, а по алгоритму заполнения рюкзака. Спасибо
Ilya Sakharov41 уровень, Москва
9 октября, 01:33
Сделал со второй попытки. Для тех, кто будет страдать, добавлю свои 5 копеек. Завис над правильной сортировкой, что в условии описано очень не явно. Итак, должно быть две сортировки: среди всех возможных комбинаций, которые можно показывать, нужно выполнить сортировку по условиям, как описано в п.п. 1, 4, 4.1, 4.2. Отсортировать и взять наилучшую комбинацию (первую в списке). Внутри полученной комбинации нужно тоже сделать сортировку, но по другим условиям! Условия сортировки описаны в (!!!) предыдущей задаче (9), см. п. 2.4. Не знаю как остальные догадались, для меня это было далеко не очевидно..
Александр35 уровень, Харьков
3 октября, 00:15
Лучшая задача, таких бы побольше. Не проходил проверку по первым 5 пунктам. Три дня решал данную задачу, 14 попыток. А оказалось не хватает запятой после First Video is displaying... 50 Зато научился создавать внутренние классы в процессе перебора возможных вариантов которые устроят валидатор.
Илья Лапшинов33 уровень, Санкт-Петербург
22 сентября, 16:23
никак не проходит по 6 условию.Положительное количество роликов. Хотя у меня все проверки прошла. Если роликов 0, то в список к заказу не попадают.
16 сентября, 00:17
Таки да, с пятой попытки я всё таки победил эту задачу! Смотрю выживших 1666 тут есть что-то символическое :)
Олег38 уровень
2 сентября, 18:15
Пожалуйста, все перепробовал, сил уже нет. Можете скинуть AdvertisementManager, который прошел валидацию. Заранее всем спасибо)