Добрый день. Задача из курса по алгоритмам, конкретно - из раздела Рекурсия. Но я попытался решить её комбинаторно и не преуспел. Собственно, задача:
Цитата:
На расстоянии
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
шагов от магазина стоит человек. Каждую секунду он выбирает, куда сделать шаг: к магазину или в противоположном направлении. Напишите программу, которая определит, сколькими способами он может попасть в магазин, пройдя ровно
![$k$ $k$](https://dxdy-03.korotkov.co.uk/f/6/3/b/63bb9849783d01d91403bc9a5fea12a282.png)
шагов и оказавшись в магазине только после выполнения последнего шага.
На вход подаются через пробел два целых числа
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
– расстояние до магазина в шагах и
![$k$ $k$](https://dxdy-03.korotkov.co.uk/f/6/3/b/63bb9849783d01d91403bc9a5fea12a282.png)
– требуемое количество шагов, которые должен сделать человек:
![$1 \leqslant n \leqslant k \leqslant 16$ $1 \leqslant n \leqslant k \leqslant 16$](https://dxdy-02.korotkov.co.uk/f/1/1/f/11f0d099fb27c1b32a0c3d390caaa5a982.png)
На выход следует подать только одно число - количество способов попадания в магазин.
Человек стоит на расстоянии
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
шагов, а сделать должен
![$k$ $k$](https://dxdy-03.korotkov.co.uk/f/6/3/b/63bb9849783d01d91403bc9a5fea12a282.png)
шагов. При
![$n = k$ $n = k$](https://dxdy-02.korotkov.co.uk/f/5/a/a/5aa3a6f9a70f7d1ad1c3c3eaf409213382.png)
шагов всё ясно, количество способов равно
![$1$ $1$](https://dxdy-01.korotkov.co.uk/f/0/3/4/034d0a6be0424bffe9a6e7ac9236c0f582.png)
. Рассмотрим остальные случаи:
![$n < k$ $n < k$](https://dxdy-03.korotkov.co.uk/f/e/c/a/eca69241c2c896df321641aa0227e7d782.png)
.
Шаги можно делать по прямой в двух направлениях: к магазину (пусть это будет "вправо") и от магазина (соответственно, "влево"). Всего шагов должно быть
![$k$ $k$](https://dxdy-03.korotkov.co.uk/f/6/3/b/63bb9849783d01d91403bc9a5fea12a282.png)
, из них
![$\frac{k - n}{2}$ $\frac{k - n}{2}$](https://dxdy-03.korotkov.co.uk/f/2/1/f/21fe3ec7986eeb39554cc83df51b78a482.png)
шагов влево и, соответственно,
![$n + \frac{k - n}{2} = \frac{n+k}{2}$ $n + \frac{k - n}{2} = \frac{n+k}{2}$](https://dxdy-01.korotkov.co.uk/f/c/8/1/c81ec306651d91c71afa37eb692e6e4682.png)
шагов вправо.
Насколько я понимаю, необходимо каким-то образом распределить
![$\frac{k - n}{2}$ $\frac{k - n}{2}$](https://dxdy-03.korotkov.co.uk/f/2/1/f/21fe3ec7986eeb39554cc83df51b78a482.png)
шагов влево среди
![$k$ $k$](https://dxdy-03.korotkov.co.uk/f/6/3/b/63bb9849783d01d91403bc9a5fea12a282.png)
шагов.
В данном случае размещаем подмножество однородных элементов (шагов влево), порядок которых не важен. Это, как я подумал, сочетания без повторений:
![$C^{\frac{k - n}{2}}_k$ $C^{\frac{k - n}{2}}_k$](https://dxdy-04.korotkov.co.uk/f/b/4/8/b4871587628aa872a4a251d69b1b976d82.png)
.
Но явно ошибся / чего-то не учёл, хотя не могу понять, чего. Задача не решается, хотя кажется несложной, к моему стыду.