Evgeniy
Evgeniy
Хотя. Тут то же самое будет. Просто на каком-то этапе у нас кончатся монеты.
Ilia
Evgeniy
Смотря как ограничено. Если общее количество монет, то это одно. Если каждой — другое.
Ilia
ну вы вообще решили усложнить ))
Evgeniy
Вот еще задача:
https://leetcode.com/problems/minimum-cost-for-tickets/
Sergei
Жадный и правда не прошёл, что это за номиналы монет такие, 408, 186 :)
Ilia
жадный в принципе не оптимальный же
Viktor
Viktor
На самом деле, это классическая ловушка для такой задачи. Типа логично предположить жадинку, но кандидат должен подобрать контр-пример сам, по-хорошему.
Viktor
Хотя, имхо, если не смог, то лучше его сразу выдать, и не терять время.
Viktor
Выдать контр-пример, в смысле.
Sergei
Условие надо внимательнее читать, я как обычно «ринулся в бой»
Viktor
Viktor
А в задачах на контестах намеренно примеры подобраны так, чтобы сбить с толку, натолкнуть на очевидное и неправильное решение.
Viktor
Всё для людей 😊
Viktor
Это интересно.
Ilia
подскажите, плз, а по дп есть какие-то нерушимые правила или главное концепция?
Viktor
в более сложных задачах, уже нет. но как старт — пойдёт.
Ilia
я просто читаю как раз твой разбор и я в целом решил примерно так, но тот же массив допустим сразу заполнял по-другому, и обработку элементов проводил по-другому
Ilia
первая задача на дп, которую я решил, поэтому и возник вопрос 😄
Viktor
Ilia
Ilia
60%, 88%
Artyom
Народ! А кто-нибудь здесь занимается написанием смарт контрактов на solidity? Как к этому относитесь?
Viktor
я понял, ты просто значения проставляешь наперёд, а не наоборот.
Ilia
Viktor
эм, сорри, вот этого я не понял )
мне кажется странным делать data[i + coin] когда ты знаешь, что там ещё ничего нет. логичнее смотреть назад, то есть i - coin, и на каждом шаге соответственно определять data[i], зная, что для меньших значений у тебя уже готовы решения.
Viktor
поэтому и называется подход bottom-up, типа ты строишь решения от меньшего к большему, пока не дойдёшь до нужной тебе суммы.
Ilia
Viktor
Ilia
но вот подход bottom up от моего же по сути ничем принципиально не отличается?
Viktor
типа как рекурсия.
Viktor
Ilia
Ilia
попробую еще посмотреть что-нибудь про bottom-up
Viktor
Artyom
нет, просто спросил. Там просто часто фуллстек нужны, кто с js еще знаком, а сами контракты вроде несложно писать.
Nikolay
Ilia
Что за жадный?
https://ru.wikipedia.org/wiki/%D0%96%D0%B0%D0%B4%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC
проще дать ссылку чем объяснять )
Viktor
Что за жадный?
ну жадинка 😉 на жадный алгоритм у меня есть только один разбор https://vitkarpov.me/posts/container-with-most-water/
Ilia
если кратко брать сначала наибольшее значение, а когда они перестанут влезать брать все меньше и меньше
Viktor
Viktor
может как раз попробуешь намапить своё понимание из первой задачи, получится ли написать по аналогии.
Ilia
Sergei
Я ещё в процессе вдумчивого просмотра)
Viktor
Sergei
Я так же делаю, просто изобрести мемоизацию вряд ли получится, когда до этого о ней и не слышал)
Null
Всем привет! 👋
Не мог пройти мимо и не поделиться ссылкой на прекрасный, 5 часовой (!) подробный видос по динамическому программированию. Alvin Zablan из Coderbyte рассказывает про 4 классические задачи: Фибоначчи, количество путей в матрице, сумма из списка чисел (размен монет), конкатенация слова из словаря.
https://www.youtube.com/watch?v=oBt53YbR9Kk
Отличное поставка задач, рисунки деревьев с анимациями, реальный код в редакторе с комментариями — качество подачи материала огонь. Часть этих задач я разбирал у себя в блоге, поэтому было любопытно сравнить подходы.
PS. Изначально ссылкой поделились в чате канала, так я узнал про курс. Добавляйтесь если ещё нет, там интересно и полезно! :-)
Ilia
Marianna
Viktor
Viktor
Причем, я наверное видел этот видос в рекомендациях потому что превьюшка знакомая, но не смотрел реально.
Viktor
Только сегодня сел, и прямо очень крутое качество. Чел этот профессионально ведет курс, конечно.
Viktor
Сегодняшняя задача хороша. Прямо пришлось подумать, чтобы не начать генерить все двоичные числа, класть в сет, и потом проверять все подстроки на совпадения.
Viktor
Сначала так и хотел делать, но потом понял.
Evgeniy
Evgeniy
Я в сет клал и проверял, набрали ли уже там нужное количество чисел
Viktor
Придумал что-то другое?
Ну я просто когда сложил все числа в сет, то понял, что их всегда ровно 2^k, логично же
Viktor
Volodymyr
а что имееться ввиду под "Сегодняшняя задача"? Есть дейли таски?
Evgeniy
Evgeniy
Да, литкод ежедневные даёт
Volodymyr
спс
Volodymyr
До одного прекрасного случая не думал что уметь в алго важно в веб-дев
Volodymyr
Однажды надо было собрать дерево из clojure table, я знатно тупил. И где-то в этот период попал на блог @vitkarpov.  Спс, кароче )
Evgeniy
Viktor
Viktor
Viktor
Volodymyr
И как, собрал дерево? Что за задача была прикладная?
Задача: в веб апп есть группы доступов, которые представлены в виде clojure table [ acnestorId: 1, descendantId: 2, level: 0 ] в бд. Надо было собрать дерево груп ). Пройтись по всем записям и рекурсивно вставить групы правильным родителям.
Volodymyr
Не сильно сложная (как сейчас кажется) 😄
Viktor