2017-07-08 1 views
0

On me donne un tableau, arr = [3,4,2,3,0,3,1,2,1], et un startIndex. Quand je suis à un index i, je peux bouger à gauche ou à droite par arr [i]. Ma tâche consiste à trouver si je peux atteindre 0. Quelqu'un peut-il m'aider avec l'approche? Merci :)Comment déterminer si je peux atteindre zéro dans le tableau?

+0

Votre réponse est déjà dans les balises que vous avez utilisées: utilisez un algorithme de recherche graphique. La profondeur-première ou la largeur-première ferait l'affaire. – user2357112

+0

Si vous rencontrez un problème spécifique dans vos tentatives d'application de tels algorithmes, veuillez vous renseigner sur votre problème spécifique. – user2357112

+0

Je viens de prendre un indice que je dois utiliser dfs ou bfs, mais je ne suis pas en mesure d'obtenir toute l'approche, comme comment je commence –

Répondre

0

La solution est chemin de trouver dans un graphique

Le vrai problème ne reçoit pas ici une solution, il est la modélisation du problème correctement. La solution est triviale.

Tout d'abord, vous n'avez pas vraiment de tableau. Ce que vous avez est un graphique. Si vous n'avez jamais fait graph theory, ce sera un peu compliqué.

Chaque index de votre matrice est un node. La valeur stockée à cet index vous donne le lines le reliant aux autres nœuds avec des flèches indiquant la direction du mouvement. Par exemple, le tableau que vous avez spécifié vous donne le graphique suivant: enter image description here

Chaque noeud est marqué avec sa position dans le tableau (0 à 8). Le nœud que vous voulez atteindre est en rouge. Cela suppose que vous pouvez aller au début du tableau une fois que vous avez atteint la fin du tableau et vice-versa. Il vous suffit de trouver un chemin entre 4 et votre startIndex. Vous pouvez appliquer Dijkstra's algorithm pour trouver le chemin le plus court.

Très bien. Maintenant, comment puis-je faire un graphique?

Si vous ne savez pas comment implémenter un graphe, you can check this stackoverflow question pour une implémentation java.

Vous pouvez facilement trouver des implémentations pour n'importe quelle autre langue.