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

Динамическое программирование. Подсчёт количества вариантов (Python)

  • Динамическое программирование метод решения задач путём составления последовательности из подзадач:
    • первая подзадача имеет простое решение;
    • последний элемент этой последовательности это исходная задача;
    • каждая подзадача этой последовательности может быть решена с использованием решения подзадач с меньшими номерами.
  • Отличия динамичного программирования от использования рекурсивных функций:
    • промежуточные значения считаются в цикле и сохраняются в списке;
    • список заполняется от меньших значений к большим;
    • сложность алгоритма существенно ниже.

    Пример. Кузнечик сидит в клетке 1 и может прыгать вправо на 1 или 3 клетки. Подсчитайте количество разных способов, которыми он может добраться до клетки N.
    Программный код (фрагмент основного алгоритма):
    N = int (input ())
    F = [0] * (N + 1) # заполняем список начальными
    нулевыми значениями
    F [1] = 1 # единственный путь для исходной 1-й клетки
    if N >= 2:
    F [2] = 1 # единственный путь для 2-й клетки
    if N >= 3:
    F [3] = 1 # единственный путь для 3-й клетки
    for i in range (4, N + 1):
    F [i] = F [i - 1] + F [i - 3] # в i-ю клетку можно
    попасть из (i-1)-й и (i-3)-й клеток
    print (F [N]) # количество различных путей добраться
    до N-й клетки

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

Рекомендуем

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

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

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

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

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

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

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