Ich bin auf dieses Problem gestoßen, das ziemlich interessant scheint. Es gibt ein paar Filme, die wir alle von ihnen sehen wollen, aber sie zeigen nur zu folgenden Zeiten:Alle Filme ansehen Algorithmus
movieA : 15
movieB : 14, 15, 17
movieC : 15, 17
movieD : 15, 20
Wir A bei 15 sehen kann, B 14, C 17 und D 20, so ist es möglich, sie alle zu sehen. Beachte, dass du C nicht mit 15 sehen kannst, nicht lebensfähig.
Das Problem, wie Sie erraten haben, ist, ob wir sie alle beobachten können.
Offensichtlich können wir es mit Backtracking lösen und alle Möglichkeiten ausprobieren. Gibt es einen besseren Weg? Ich habe die Idee, zuerst mit Filmen mit der geringsten Anzahl verfügbarer Zeiten zu beginnen, auf diese Weise können wir die Lösung schneller finden, wenn es eine Lösung gibt, die Komplexität im ungünstigsten Fall ist immer noch dieselbe.
Gibt es einen besseren Algorithmus für dieses Problem da draußen?
P.S. Wie @gen gefragt hat, habe ich vergessen darauf hinzuweisen, dass jeder Film 1 Stunde ist. Wenn du also einen um 14:00 Uhr guckst, wirst du den um 15:00 nicht verpassen. Danke für die Frage.
Wie lange ist ein Film? – gen
@gen jeder Film ist eine Stunde, so dass Sie sich keine Sorgen machen müssen, wenn Sie einen Film um 14:00 Uhr sehen, können Sie den um 15:00 verpassen. Gute Frage! – Arch1tect
Sieht wie ein maximales übereinstimmendes Problem auf einem zweiteiligen Diagramm aus. –