Учитывая размер шахматной доски и начальную позицию коня, рассчитайте вероятность того, что после k
ходов конь окажется внутри шахматной доски.
Замечания:
Рыцарь делает все 8 возможных ходов с равной вероятностью.
Как только рыцарь оказывается вне шахматной доски, он не может вернуться внутрь.
вход
Входы разделяются запятыми в виде:
l,k,x,y
где l
- длина и ширина шахматной доски, k
- количество ходов, которые совершит рыцарь, x
- x-позиция начальной позиции рыцаря и y
y-позиция начальной позиции рыцаря. Обратите внимание, что 0,0
это левый нижний угол доски и l-1,l-1
верхний правый угол доски.
Алгоритм:
Начните с начальных координат рыцаря. Сделайте все возможные ходы для этой позиции и умножьте эти ходы на их вероятность, для каждого рекурсивного вызова функции продолжайте этот процесс, пока не будет выполнено условие завершения. Условие завершения - если конь находится вне шахматной доски, в этом случае верните 0 или желаемое количество ходов исчерпано, в этом случае верните 1.
Как мы видим, текущее состояние рекурсии зависит только от текущих координат и количества выполненных шагов. Поэтому мы можем запомнить эту информацию в табличной форме.
кредит
Эта проблема изначально появилась в блоге crazyforcode.com, опубликованном под лицензией CC BY-NC-ND 2.5 IN . Это было немного изменено, чтобы сделать его более сложным.