Compte tenu de la taille de l'échiquier et de la position initiale du chevalier, calculez la probabilité qu'après un k
mouvement, le chevalier se trouve à l'intérieur de l'échiquier.
Remarque:
Le chevalier effectue ses 8 mouvements possibles avec une probabilité égale.
Une fois que le chevalier est à l'extérieur de l'échiquier, il ne peut pas revenir à l'intérieur.
Contribution
Les entrées sont séparées par des virgules sous la forme:
l,k,x,y
où l
est la longueur et la largeur de l'échiquier, k
le nombre de mouvements que le chevalier effectuera, x
la position x de la position initiale du chevalier et y
la position y de la position initiale du chevalier. Notez qu'il 0,0
s'agit du coin inférieur gauche de la carte et l-1,l-1
du coin supérieur droit de la carte.
Algorithme:
Commencez par les coordonnées initiales du chevalier. Effectuez tous les mouvements possibles pour cette position et multipliez ces mouvements par leur probabilité, pour chaque mouvement appelez récursivement la fonction continuez ce processus jusqu'à ce que la condition de fin soit remplie. La condition de fin est si le chevalier est en dehors de l'échiquier, dans ce cas retournez 0, ou si le nombre de coups souhaité est épuisé, dans ce cas retournez 1.
Comme nous pouvons le voir, l'état actuel de la récursivité ne dépend que des coordonnées actuelles et du nombre de pas effectués jusqu'à présent. Par conséquent, nous pouvons mémoriser ces informations sous forme de tableau.
Crédit
Ce défi provient à l'origine d'un article de blog de crazyforcode.com publié sous la licence CC BY-NC-ND 2.5 IN . Il a été légèrement modifié pour le rendre un peu plus difficile.