55,7K подписчиков
В технике, экономике и некоторых других направлениях иногда приходится решать задачи на поиск оптимального пути или состояния. По сути это цель любой автоматизации - минимизировать затраты или получить наилучший результат. Это понятие ввёл в 40-ых годах прошлого века Ричард Беллман. Идея достаточно простая - для того чтобы получить конечный результат, необходимо предварительно решить несколько вспомогательных задач. Решить каждую из которых можно решив их предварительные задачи. Саму постановку...
1 год назад
6K подписчиков
Статья подготовлена для студентов курса «Алгоритмы для разработчиков» в образовательном проекте OTUS. Часто встречаю в интернете такое: «Мне дали на 4-м туре собеседования в Яндексе задачу динамического программирования — уууу — какая сложная была!», «Сейчас крупнейшие зарубежные компании на собеседовании сразу дают динамику, чтобы отсеять слабых программистов». Из-за устоявшихся стереотипов такие задачи считаются очень сложными. Предполагается, что решение их подвластно немногим. Что же это за...
4 года назад
539 подписчиков
Предлагаю потренироваться решать задачи на динамическое программирование на одной из классических задач. Читаем условие: Как определить, что задача на динамическое программирование? Кроме того, что на сайте указан раздел, из которого задача, метод динамического программирования чаще всего помогает отвечать на вопросы "сколько способов?" и "какой способ оптимальный?". Да, есть ещё варианты, например, зная количество способов и первое число в "решении" можно найти k-ое по счёту решение. Итак, в этой задаче как раз надо посчитать количество способов подняться на лестницу...
4 года назад
13,8K подписчиков
Источник: Nuances of Programming Предыдущая часть: “Структуры данных: подход «разделяй и властвуй»” Подход динамического программирования схож с подходом «разделяй и властвуй»: тоже разбивает задачи на как можно более мелкие подзадачи. Отличие в том, что здесь подзадачи решаются не независимо. Результаты этих более мелких подзадач запоминаются и используются для аналогичных или перекрывающихся подзадач. Динамическое программирование применяется там, где есть задачи, которые можно разделить на похожие подзадачи, а их результаты использовать повторно...
2 года назад