Hier ist eine interessante Frage, die ich kam auf:Interview Puzzle auf einem Liniensegment auf Reisen
Sagen wir einfach auf eine Reihe Linie Länge M
, wo 0 < M <= 1,000,000,000
, Sie N
(1 < N <= 100,000
) integer Punktpaare gegeben. In jedem Paar repräsentiert der erste Punkt, wo sich ein Objekt gerade befindet, und der zweite Punkt gibt an, wohin ein Objekt bewegt werden soll. (Denken Sie daran, second
Punkt kann kleiner als die first
sein).
Angenommen, Sie beginnen an der Stelle 0
und haben einen Wagen, der 1
Objekt enthalten kann. Sie möchten alle Objekte von ihren Anfangspositionen zu ihren jeweiligen Endpositionen bewegen, während Sie die kleinste Entfernung entlang der Nummernlinie (nicht Verschiebung) bewegen. Sie müssen am Punkt M
enden.
Nun, ich habe versucht, dieses Problem zu einem einfacheren Problem zu reduzieren. Um ehrlich zu sein, kann ich nicht einmal an eine rohe Gewalt denken (möglicherweise gierige) Lösung. Mein erster Gedanke war jedoch, eine Rückwärtsbewegung in zwei Vorwärtsbewegungen zu degenerieren, aber das scheint nicht in allen Fällen zu funktionieren.
zog ich diese 3
Beispieltestfälle in
Die Antwort auf den ersten Testfall ist 12
. Zuerst nehmen Sie die red
Artikel bei Punkt 0
. Dann bewegen Sie sich zum Punkt 6
(Abstand = 6
), lassen Sie den Artikel red
vorübergehend fallen, dann holen Sie sich den green
Artikel. Dann bewegen Sie sich zu Punkt 5
(Abstand = 1
) und lassen Sie den green
Artikel fallen. Dann gehen Sie zurück zum Punkt 6
(Abstand = 1
) und nehmen Sie den red
Artikel, den Sie fallen gelassen haben, gehen Sie zu Punkt 9 (Abstand = 3
), dann gehen Sie zum Punkt 10
(Abstand = 1
), um die Sequenz zu beenden.
Die Gesamtstrecke war 6 + 1 + 1 + 3 + 1 = 12
, was der minimal mögliche Abstand ist.
Die anderen beiden Fälle haben Antworten von 12
, glaube ich. Ich kann jedoch keine allgemeine Regel finden, um es zu lösen.
Wer hat irgendwelche Ideen?
Bitte stellen Sie keine Fragen außerhalb des Themas. – Oded
@Oded das Fehlen der "Interview Frage" -Tag macht dieses Off-Thema nicht – BlackBear
@BlackBear - es ist eine rein mathematische Frage, tut. Was ist der programmierungsspezifische Aspekt hier? – Oded