Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2011, 12:43   #1
Андрей1010
 
Регистрация: 11.10.2011
Сообщений: 3
По умолчанию Задача на динамическое программирование)

В нашем зоопарке появился заяц. Его поместили в клетку, и чтобы ему не было скучно, директор зоопарка распорядился поставить в его клетке лесенку. Теперь наш зайчик может прыгать по лесенке вверх, перепрыгивая через ступеньки. Лестница имеет определенное количество ступенек N. Заяц может одним прыжком преодолеть не более К ступенек. Для разнообразия зайчик пытается каждый раз найти новый путь к вершине лестницы. Директору любопытно, сколько различных способов есть у зайца добраться до вершины лестницы при заданных значениях K и N. Помогите директору написать программу, которая поможет вычислить это количество. Например, если K=3 и N=4, то существуют следующие маршруты: 1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2, 1+3, 3+1. Т.е. при данных значениях у зайца всего 7 различных маршрутов добраться до вершины лестницы.


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

В единственной строке входного файла INPUT.TXT записаны два натуральных числа K и N (1 ≤ K ≤ N ≤ 300). К - максимальное количество ступенек, которое может преодолеть заяц одним прыжком, N – общее число ступенек лестницы.

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

В единственную строку выходного файла OUTPUT.TXT нужно вывести количество возможных вариантов различных маршрутов зайца на верхнюю ступеньку лестницы без ведущих нулей.

Код:
Примеры

№	INPUT.TXT	OUTPUT.TXT
1	1 3	1
2	2 7	21
3	3 10	274
Сдать задачу

Последний раз редактировалось Serge_Bliznykov; 11.10.2011 в 15:01.
Андрей1010 вне форума Ответить с цитированием
Старый 11.10.2011, 12:52   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Википедия -> Динамическое программирование.
Что именно непонятно?
Somebody вне форума Ответить с цитированием
Старый 11.10.2011, 13:00   #3
Андрей1010
 
Регистрация: 11.10.2011
Сообщений: 3
По умолчанию

Как решить эту задачу)
Андрей1010 вне форума Ответить с цитированием
Старый 11.10.2011, 13:21   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Например, если K=3 и N=4, то существуют следующие маршруты: 1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2, 1+3, 3+1.
f(x) - количество способов запрыгнуть на ступеньку.
f(1) = 1 // прыгнул на ступеньку
f(2) = 1 + f(1) = 2 // прыгнул или сразу, или с первой
f(3) = 1 + f(1) + f(2) = 4 // прыгнул или сразу, или с первой, или со второй
f(4) = f(1) + f(2) + f(3) = 7 // сразу нельзя, прыгнул или с первой, или со второй, или с третьей
.......
f(n) = f(n - k) + ... + f(n - 1)
Somebody вне форума Ответить с цитированием
Старый 11.10.2011, 13:56   #5
Андрей1010
 
Регистрация: 11.10.2011
Сообщений: 3
По умолчанию

Огромнейшее спасибо!!!
Андрей1010 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое программирование!!! Fuckkiller Microsoft Office Excel 13 04.05.2011 19:03
динамическое программирование stefan0202 Паскаль, Turbo Pascal, PascalABC.NET 3 07.02.2011 22:05
Динамическое программирование joey_ramone Паскаль, Turbo Pascal, PascalABC.NET 0 23.04.2010 13:51
Динамическое программирование. MAKEDON Помощь студентам 6 26.08.2009 14:10
Задача на динамическое программирование Римма1990 Помощь студентам 2 02.04.2009 23:11