Динамическое программирование – это мощный метод оптимизации, который применяется для решения задач, обладающих свойствами оптимальной подструктуры и перекрывающимися подзадачами. Задача: Дана последовательность чисел. Найти длину наибольшей возрастающей подпоследовательности. Решение: Псевдокод: for i in range(1, n):
for j...
Статья подготовлена для студентов курса «Алгоритмы для разработчиков» в образовательном проекте OTUS. Часто встречаю в интернете такое: «Мне дали на 4-м туре собеседования в Яндексе задачу динамического программирования — уууу — какая сложная была!», «Сейчас крупнейшие зарубежные компании на собеседовании сразу дают динамику, чтобы отсеять слабых программистов». Из-за устоявшихся стереотипов такие задачи считаются очень сложными. Предполагается, что решение их подвластно немногим. Что же это за...