L'inspiration pour ce casse - tête de golf de code est le problème du pont et la flamme , où d personnes au début d'un pont doivent tous franchir dans le moins de temps.
Le hic, c'est qu'au plus deux personnes peuvent traverser en même temps, sinon le pont s'écraserait sous leur poids, et le groupe n'a accès qu'à une seule torche, qui doit être portée pour traverser le pont.
Chaque personne dans le puzzle entier a un temps spécifié qu'elle prend pour traverser le pont. Si deux personnes se croisent, la paire va aussi lentement que la personne la plus lente.
Il n'y a pas de nombre fixe de personnes qui doivent traverser le pont; votre solution DOIT fonctionner pour n'importe quelle valeur de d .
Vous n'avez pas besoin d'utiliser d'entrée standard pour ce problème, mais pour expliquer le problème, j'utiliserai le format d'entrée et de sortie suivant pour l'explication. Le premier chiffre, d , est le nombre de personnes au début du pont. Ensuite, le code recherchera les nombres d , chacun représentant la vitesse d'une personne.
La sortie du code sera le MOINS de temps requis pour traverser tout le monde du début du pont à la fin du pont, tout en répondant aux critères expliqués précédemment.
Voici quelques cas d'entrée et de sortie et l'explication du premier cas d'entrée. C'est à vous de dériver un algorithme à partir de ces informations pour résoudre le problème dans le moins d'octets de code possible.
contribution
4
1 2 5 8
production
15
Pour atteindre cette sortie, les gens doivent traverser de la manière suivante.
A and B cross forward (2 minutes)
A returns (1 minute)
C and D cross forward (8 minutes)
B returns (2 minutes)
A and B cross forward (2 minutes)
Voici un autre cas de test pour vous guider sur votre chemin.
contribution
5
3 1 6 8 12
production
29
Règles:
- Supposons que l'entrée ne sera pas triée et vous devez le faire vous-même (si vous en avez besoin)
- Le nombre de personnes dans le puzzle n'est pas fixé à 4 (N> = 1)
- Chaque passage de groupe et individuel doit avoir une torche. Il n'y a qu'une seule torche.
- Chaque groupe doit être composé d'un maximum de 2 personnes seulement!
- Non, vous ne pouvez pas sauter du pont et nager de l'autre côté. Pas d'autres astuces comme celle-ci;).
1 4 5 6 7a un problème similaire. 25 contre 26
N >= 2personnes (ce qui signifie, curieusement, que c'est un travail supplémentaire pour gérer le cas trivial de "1 personne a besoin de traverser"), donc une clarification sur ce point serait formidable. Merci d'avance.
1 3 4 5, qui devraient renvoyer 14 et non 15.