Pas minimum pour gagner Snake Ladder
Donné un serpent et échelle de jeu, écrire une fonction qui renvoie le nombre minimum de sauts à prendre le dessus ou la position de destination.
Vous pouvez supposer que le die vous lance résultats toujours à la faveur de vous
**
Voici ma solution, mais pas sûr que c'est correct ou pas.
Ce problème est similaire à la grenouille de sauter dans un tableau.Mais avant que nous
aura pour modéliser le problème dans ce format.Créer un tableau de taille 100 et pour chaque position de stocker 6 si il y a
pas de serpent ou une échelle. magasin de sauter le comte . si l'échelle est présente à cette
point . Si le serpent est présent, puis rangez -ve sauter à cet endroit.Maintenant que nous avons à résoudre dans le nombre minimum de mesures que nous pouvons atteindre jusqu'à la fin.
Principal problème peut être résolu en utilisant la dynamique de programmation en O(n^2)
la complexité et O(n ) de l'espace.
source d'informationauteur AKS
Vous devez vous connecter pour publier un commentaire.
Ont un coup d'oeil à cette blog, il fait un complète l'analyse mathématique de serpents et Échelles, à l'aide de simulations Monte-Carlo et chaînes de Markov. Il ne le fait montrer un moyen de calculer le nombre minimum d'étapes pour gagner (essentiellement de construire une matrice de transition et de voir comment beaucoup de fois vous devez multiplier le vecteur de départ pour arriver à une solution non nulle position finale). Ce n'est probablement pas le moyen le plus efficace de le faire, mais le post est bien la peine de le lire.
Ici est une solution rapide en python, en utilisant des ensembles. J'ai obtenu des numéros dans le saut-le tableau de l'article du blog. À chaque étape, on calcule simplement tous les postes accessibles à partir de l'étape précédente, et continue de le faire jusqu'à ce que la position finale est entre les accessible positions:
Temps d'exécution est négligeable et il crache de la réponse correcte (voir blog) de 7.
Ici est un simple largeur de la première solution de recherche en Python:
La disposition de la carte (c'est à dire la
jump
dictionnaire) est tirée de la post de blog liés par le Bas Swinckels dans son réponse.Ce code affichera (l'un des) plus court chemin(s) à chaque joignable place sur le plateau, se terminant par:
Si vous voulez la sortie complète, voir cette démo sur ideone.com.
J'ai mis en place, dans C#. Vous pouvez consulter mon gist ici. Je vais aussi coller le code ci-dessous.
Dans mon application j'ai examiné les points suivants:
plus court chemin de sensibilisation : Lorsque l'algorithme devient la cible, il enregistre le chemin le plus court et au cours du calcul, il fera tomber les recherches qui sont plus long que l'actuel trouvé la solution. Qui rend le processus beaucoup plus rapide dans des situations complexes.
Largeur de Recherche (BFS) Ou la Programmation Dynamique la solution en O(N) en temps à l'aide de O(N) l'espace.
Initialisation: Garder un auxiliaire de la matrice de garder les échelles et de serpents. Supposons qu'il y a une échelle de xe à yth cellule. Donc, auxi[x] = y. Si il y a de serpent de la cellule de x à y,
x>y
puis garderauxi[x]=-1
. Si il n'y a pas d'échelle ou de serpent de la cellule en cours, garder auxi[x] = x;Une programmation dynamique solution:
Nous allons toujours sauter une cellule où un serpent commence à cause supposons, sur le x de la cellule d'un serpent commence et se termine sur le yth cellule où, y
source d'information
Solution en C# en o(n).
Construire une aide de la matrice d'aller au cours de chaque étape et de voir ce qui est le minimum pour y arriver et ajoutez une.
Ce programme de simuler le réel scénario..veuillez me faire savoir si elle répond à l'attente ou pas..
2.À partir de la cellule 1, vous pouvez goto cellules 2, 3, 4, 5, 6, 7 donc vertex 1 aura dirigé bord vers le vertex 2, vertex 3....vertex 7. De même pris en compte pour le repos des cellules.
Voir le code complet de la solution ici - https://algorithms.tutorialhorizon.com/snake-and-ladder-problem/