Информатика • 9 класс
6

Динамическое программирование. Выбор оптимального решения (C++)

  • Динамическое программирование позволяет отыскать оптимальное решение, когда какой-нибудь параметр будет максимальным или минимальным.
  • Пример. Кузнечик сидит в клетке 1 и может прыгать вправо на 1 или 3 клетки. За прыжок в каждую клетку нужно заплатить определённую стоимость (элементом Price [i] массива Price задаётся стоимость прыжка в клетку i). Найдите минимальную стоимость маршрута кузнечика в клетку N.
  • Программный код (фрагмент основного алгоритма) с комментариями:

Строка кода

Комментарий

for (int i = 0; i < N; i++)
  C [i] = 0;

Заполняем массив начальными нулевыми значениями

C [1] = Price [1];

Стоимость прыжка в клетку 2

C [2] = C [1] + Price [2];

Стоимость прыжка в клетку 3 (единственный путь из клетки 2)

for (int i = 3; i < N; i++)
  C [i] = min (C [i - 3],
  C [i - 1]) + Price [i];

 

Стоимость прыжка в клетку i складывается из стоимости i-й клетки и минимальной из возможных накопленных стоимостей маршрутов из (i 1)-й или (i 3)-й клеток

cout << C [N - 1];

Минимальная стоимость маршрута в клетку N

Было полезно?

Рекомендуем

Вы учитель или ученик?
Познакомьтесь с нашим образовательным онлайн-сервисом с тысячами интерактивных работ
Учителю
Удобно проводить уроки в классе, назначать работы на дом и анализировать результаты всего класса или конкретных учеников
Ученику
Самостоятельно изучать новые и повторять пройденные темы, готовиться по индивидуальной траектории и оценивать результаты на наглядных графиках
Зарегистрироваться в «Облаке знаний»
Логотип облако знаний
+7 (499) 322-07-57
info@oblakoz.ru

Контактный центр

МО, г. Долгопрудный,
Лихачевский проезд, 4, стр. 1

Отдел заботы о пользователях

Политика конфиденциальности

© ООО «Физикон Лаб», 2025

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪