Статья подготовлена для студентов курса «Алгоритмы для разработчиков» в образовательном проекте OTUS. Часто встречаю в интернете такое: «Мне дали на 4-м туре собеседования в Яндексе задачу динамического программирования — уууу — какая сложная была!», «Сейчас крупнейшие зарубежные компании на собеседовании сразу дают динамику, чтобы отсеять слабых программистов». Из-за устоявшихся стереотипов такие задачи считаются очень сложными. Предполагается, что решение их подвластно немногим. Что же это за страшный зверь такой — динамическое программирование? Если разобраться, концептуально тут всё очень просто, и идея этого метода лежит на поверхности. Сперва делаем модель задачи, формализуя её и просто находим решение для параметра модели, равного, скажем, единице. Затем предполагаем, что она решена для параметра, равного N - 1, и, исходя из этого, решаем для N. Те, кто недавно учились в школе знают, что это принцип математической индукции. Не обязательно двигаться с шагом 1, достаточно уметь
Динамическое программирование: не так страшен чёрт...
23 марта 202023 мар 2020
305
2 мин