J'ai eu cette question dans une interview et je n'ai pas pu la résoudre.
La question est la suivante: créer un algorithme, savoir à partir de quelle station-service vous devez commencer à conduire afin de compléter un cercle complet.
En tant qu'exercice pour moi, je traduirais l'algorithme en C #.
Cela ressemble à une dérivation de l'algorithme de chemin le plus court, de sorte que vous considérez donc que chaque station est un sommet d'un graphique, et les bords sont pondérés à leur distance (en termes de carburant).
Ensuite, vous pouvez utiliser une adaptation de Dijkstra pour résoudre -> http://fr.wikipedia.org/wiki/dijkstra%27s_algorithm
Ma première réponse serait "Les exigences semblent être incomplètes, es-tu sûr de vouloir que je rédige le code sur la base de ces exigences seulement, pourrons-nous les faire au fur et à mesure, ou voudriez-vous que j'aimerais terminer les exigences avant de concevoir les logiciels?".
Les besoins incomplets sont, comme indiqué dans d'autres questions, la capacité de carburant de la voiture. Fin Point - Est-ce le point de départ ou la station avant le point de départ. (Je pense que vous répondez à cela dans votre commentaire "Terminer un cercle complet implique End = Début, dans ce cas. Je clarifierais cela comme il n'est pas explicite) La question implique y a une seule solution et une seule solution, est-ce correct.
Les autres problèmes sont la performance de l'algorithme une préoccupation ou une autre manière, quel est le budget de ce projet.
C'est une bonne question - vous ne pouvez pas y répondre sous la forme actuelle et être certain que vous avez fourni au client la solution au problème à laquelle il s'attend.
J'ai l'impression que le quiz donné manque de parties vitales. Cependant, dans mon raisonnement, j'utiliserais après des hypothèses suivantes:
Compte tenu de ces hypothèses, la tâche peut être facilement brute forcée avec une complexité O (n ** 2), en essayant toutes les stations-service.
Si cela nécessite une solution plus robuste, il est possible de transformer ce quiz à problème de sous-séquence continue maximale avec des contraintes supplémentaires, qu'elle ne devriez pas aller sous zéro. La complexité de cet algorithme est O(n) - linéaire.
Pour la première étape, permet de transformer notre problème initial au problème résolu par une sous-séquence maximale en résumant la quantité de gaz à la station-service et au coût de cette station.
La deuxième étape consiste à appliquer un algorithme de sous-séquence maximale. L'algorithme est basé sur 2 hypothèses:
Appliquer cet algorithme à la liste cerclée des stations 2 fois (2 séquences qui se chevauchent), nous recevrons la station qui commence la séquence qui accumule la majeure partie du carburant.
La troisième étape consiste à vérifier que l'objectif est accessible avec une quantité donnée de carburant et une station de départ donnée, la complexité O (n)