Методом прямой прогонки. (Написать программу)
Вот сама задача:
Кузнечик находиться на 1 клетке. У кузнечика есть любимое число k. Кузнечик может прыгать по прямой на 1, на 2, и на k клеток вперёд. Кузнечик хочет посчитать, сколько есть способов добраться до n клетки. Помогите кузнечику узнать ответ на его вопрос. Входные данные: n - количество клеток, k - любимое число кузнечика. Выходные данные: Требуется вывести одно число - ответ на задачу. Ограничения на входные данные: k < n <= 10^5 Пример:
Входные данные: 5 4
Выходные данные: 5
Другие языки программирования и технологии
Решить задачу динамического программирования
Результат в примере ошибочен:
1 1 1 1
2 1 1
1 2 1
1 1 2
2 2
4
ШЕСТЬ вариантов.
var
line: array [-100000..100000] of integer;
i, n, k: integer;
begin
read(n, k);
{этот цикл не нужен, если твоя версия Pascal обнуляет значения создаваемых переменных}
for i := 2 - k to 0 do line[i] := 0;
line[1] := 1;
for i := 2 to n do line[i] := line[i - 1] + line[i - 2] + line[i - k];
writeln(line[n])
end.
Предполагается, что k не равно 1 или 2.
1 1 1 1
2 1 1
1 2 1
1 1 2
2 2
4
ШЕСТЬ вариантов.
var
line: array [-100000..100000] of integer;
i, n, k: integer;
begin
read(n, k);
{этот цикл не нужен, если твоя версия Pascal обнуляет значения создаваемых переменных}
for i := 2 - k to 0 do line[i] := 0;
line[1] := 1;
for i := 2 to n do line[i] := line[i - 1] + line[i - 2] + line[i - k];
writeln(line[n])
end.
Предполагается, что k не равно 1 или 2.
Михаил Муковнин
Учитель дал задние придумать и решить задачу динамического программирования методом прямой прогонки, я придумал такую задачу, поэтому она может быть не точной, можете её поправить
Что-то мне твой пример не очень понятен. 5 клеток он может пропрыгать так:
1 1 1 1 1
1 1 1 2
1 1 2 1
1 1 3
1 2 1 1
1 2 2
1 3 1
1 4
2 1 1 1
2 1 2
2 2 1
2 3
3 1 1
3 2
4 1
Явно больше, чем 5 вариантов. Поясни.
1 1 1 1 1
1 1 1 2
1 1 2 1
1 1 3
1 2 1 1
1 2 2
1 3 1
1 4
2 1 1 1
2 1 2
2 2 1
2 3
3 1 1
3 2
4 1
Явно больше, чем 5 вариантов. Поясни.
Михаил Муковнин
Учитель дал задние придумать и решить задачу динамического программирования методом прямой прогонки, я придумал такую задачу, поэтому она может быть не точной, можете её поправить
Метод прямой прогонки - это частный случай метода Гаусса для трёхдиагональной матрицы. Я в душе не ипу, причём здесь ДП. Не соизволишь разъяснить, как и зачем сюда можно додуматься прикрутить прогонку?
Михаил Муковнин
Учитель дал задние придумать и решить задачу динамического программирования методом прямой прогонки, я придумал такую задачу, поэтому она может быть не точной, можете её поправить
cоставляем таблицу A (по примеру) - по горизонтали номер ячейки, по вертикали - число, на которое прыгает кузнечик.
в ячейке пишется количество способов которыми кузнечик может попасть в эту ячейку. Как его вычислить?
первый ряд - единицы, понятно. Второй ряд ( число 2), i-ая ячейка- пишем максимум из двух значений (верхняя ячейка и 1 + содержимое верхней ячейки под номером i-2. Также для следующей строки ( число 4).
Ответ на задачу - максимум таблицы
сам раза три таблицу перерисовывал. надо днем делать

в ячейке пишется количество способов которыми кузнечик может попасть в эту ячейку. Как его вычислить?
первый ряд - единицы, понятно. Второй ряд ( число 2), i-ая ячейка- пишем максимум из двух значений (верхняя ячейка и 1 + содержимое верхней ячейки под номером i-2. Также для следующей строки ( число 4).
Ответ на задачу - максимум таблицы
сам раза три таблицу перерисовывал. надо днем делать

Похожие вопросы
- Помогите решить задачу на программирование!
- Помогите пожалуйста решить задачу по программированию. В чем я ошибаюсь?
- Помогите решить) Задачи по программированию в Паскале
- Помогите пожалуйста решить задачу по программированию (язык программирования СИ)
- Помогите пожалуйста решить задачи по программированию. P.S: задачи по паскалю.
- помогите решить задачу по программированию
- Помогите решить задачи по программированию!!!
- Помогите решить задачу по программированию! Язык - Visual Basic.
- помогите решить задачи по программированию в ПАСКАЛЕ!!!
- Помогите решить задачу по программированию. Дано четырёхзначное число. Найти: а) сумму его цифр; б) произведение его циф