Другие языки программирования и технологии

Помогите с задачей на паскале

Фишка может двигаться по полю длины N только вперед. Длина хода фишки не более K. Найти число различных путей, по которым фишка может пройти поле от начала до конца.

Пример. N=3, K=2

Возможные пути:

1,1,1

1,2

2,1

Ответ: 3.

Кто знаэт, может не всьо задачу, может просто совет датите, крч, любой ответ полезен
TK
Timur Kelbakh
121
при N = 3, у нас 3 пути... если N = 4, тогда...
1,1,1,1
2,1,1
1,2,1
1,1,2
2,2
что равно 5-ти путям
а при N = 2 у нас
1,1
т. е. один путь
значит...
N кол-во путей
2, 1
3, 3
4, 5
Значит... у нас арифметическая последовательность...
program podschet;
var N,puti:integer;
begin
read(N);// меньше двух - не будет ни одного пути.
if N >= 2 then puti:=1; // начало последовательности
if N >= 3 then
for var i := 3 to N do // 3, т. к. при i = 2, puti равен 1.
begin
puti:= puti + 2;
end;
write(puti);//выведет 0 при N < 2
end.
(не... не правильно, при N 5, у нас 8 путей... завтра додумаю...)
Водяной Ленкин
Водяной Ленкин
163
Лучший ответ
Саша Чуркин Ты забыл про K.
Макс Лютов
Макс Лютов
90 702
1. заводим массив из N+1 чисел (0..N) и записываем его нулями
2. в нулевую ячейку пишем 1
3. запускаем цикл с нулевой по ячейку с номером N (обозначим эту ячейку как A)
3.1. запускаем цикл на K ячеек вперёд (обозначим эту ячейку как B)
3.1.1. прибавляем к каждой ячейке B значение, записанное в ячейке A
4. выводим значение, записанное в ячейке N

Если нигде не ошибся, работающий алгоритм в 4 строчки кода + ещё несколько строк для ввода данных.

P.S. разумеется надо также проверять факт выхода за пределы массива, и если он произошёл то запись в шаге 2.1.1 не производить.

P.P.S Первый раз с алгоритмом ошибся. Сейчас исправил
Сергей Сигуев
Сергей Сигуев
42 958