2017-02-11 7 views
1

Ich nehme einen Programmierkurs ersten Jahr und das ist eine Aufgabe Frage, also würde ich ein paar Hinweise, aber nicht die Antwort schätzen.So optimieren Sie Übereinstimmungen mit Bereichen (Hausaufgaben)

Die Frage war, mit einer Liste von einer Anzahl von geordneten Elementen, wie Sie sie in bestimmte geordnete Bereiche einfügen, so dass die maximale Anzahl der Elemente geschlitzt ist? (Die Anzahl der Bereiche und Elemente, die nicht unbedingt gleich sind)

Dieses Beispiel Eingabe gegeben wurde:

Elements: 2, 6, 7, 8, 9 
Ranges: 0-3, 2-5, 3-9, 8-10 

Die Ausgabe für dieses 3 wäre, wie in 2 Slot würde 2-5 (oder 0-3), Würde 6/7 in 4-9 und 9 in 8-13 einrasten.

Was ich bisher versucht habe ist eine gierige Vorgehensweise zu versuchen. Das scheint, da es zum Scheitern verurteilt sind viele Fälle, in denen es zum Beispiel nicht funktioniert:

Elements: 2, 5 
Ranges: 0-7, 2-3 

die Verarbeitung der Elemente erste Schlitze 2 in 0-7, aber dann hat 5 nirgendwo zu gehen (und es ist klar, bei der Inspektion dass das Maximum 2 ist). Ich bin mir nicht ganz sicher, wie es weitergeht - ein oder zwei Hinweise wären sehr willkommen!

+0

Für das erste Beispiel sollte die Antwort 2 sein, da Sie 2-5,3-9 verwenden können, da alle Zahlen in diesen beiden Bereichen geschlitzt werden können. Habe ich recht ? –

+0

Es gibt auch einige Tippfehler, in Ihrer Erklärung haben Sie Bereiche verwendet, die nicht im Beispiel enthalten sind. –

Antwort

1

Sie können maximum bipartite matching verwenden, um dieses Problem zu lösen.

Edit: Oder Sie können die Bereiche, in aufsteigender Reihenfolge durch den zweiten Wert zu sortieren.

Beispiele: Ranges: 0-7, 2-3 2-3, wird 0-7

Dann können Sie Ihre gierigen Ansatz.

Verwandte Themen