Определить число всевозможных "маршрутов" мячика с вершины на землю - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Не столько интересует код, сколько сам принцип решения. Не понимаю задачи на динамику, помогите разобраться. На вершине лесенки, содержащей N ступенек, находится мячик, который начинает прыгать по ним вниз, к основанию. Мячик может прыгнуть на следующую ступеньку, на ступеньку через одну или через 2. (То есть, если мячик лежит на 8-ой ступеньке, то он может переместиться на 5-ую, 6-ую или 7-ую.) Определить число всевозможных "маршрутов" мячика с вершины на землю.

Входные данные

Вводится одно число 0 < N < 31.

Выходные данные

Выведите одно число — количество маршрутов.

Решение задачи: «Определить число всевозможных "маршрутов" мячика с вершины на землю»

textual
Листинг программы
  1. program dp1;
  2. var
  3.   dp : array[0..107] of uint64;
  4.   n, i : integer;
  5.  
  6. begin
  7.   readln(n);
  8.   for i := 0 to 107 do dp[i] := 0;
  9.   dp[n] := 1; //на n - ой ступеньке один способ - быть там вначале
  10.  
  11.   for i := n - 1 downto 0 do begin
  12.     dp[i] := dp[i + 1] + dp[i + 2] + dp[i + 3]; //на i-ую ступетьку можно прыгнуть из i + 1, i + 2, i + 3
  13.   end;
  14.  
  15.   //0 ступенька - земля => dp[0] - ответ.
  16.   writeln(dp[0]);
  17. end.

Объяснение кода листинга программы

В данном коде решается задача о числе всевозможных путей в глубину графа, представленная в виде стека (или очереди). Список действий:

  1. Считывается из входных данных число n - количество уровней графа.
  2. Создается массив dp размером 108 (включая нулевой элемент, который является землей).
  3. Все элементы массива dp инициализируются нулем.
  4. dp[n] устанавливается равным единице, так как на n-ой вершине только один путь - начать с нее.
  5. Используя цикл, начиная с n-1 и до 0 (включительно), устанавливаются значения dp[i] равными сумме dp[i+1], dp[i+2] и dp[i+3]. Это обусловлено тем, что на i-ую вершину можно попасть только из i+1, i+2 или i+3.
  6. Ответ (число путей до нулевой вершины) выводится на экран. Обратите внимание, что в данном коде предполагается, что граф направленный и без циклов (иначе пути не будут корректно учитываться). Также, для корректного выполнения программы, необходимо проверить, что n >= 0 и n <= 107.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы