метод динамического программирования