Ich habe diese Frage Ich habe Probleme,Finden Sie Überlappungsbereich in mehreren Regionen
Ich habe eine Maschine, Aufgaben treten nacheinander in die Maschine.
Jede Aufgabe hat eine Aufgaben-ID, Startnummer und Anzahl der angeforderten Einheiten.
Für jede Aufgabe muss ich prüfen, ob der Bereich der Aufgabe [Startnummer, Startnummer + Anforderungseinheiten] einen der vorherigen Aufgabenbereiche überlappt, wenn dies der Fall ist, wird es nicht ausgeführt.
Es gibt 32 Aufgaben-ID, die Maschine kann nicht die gleiche Aufgaben-ID gleichzeitig halten (Wenn sich die Aufgaben-ID 2 in der Maschine befindet, muss sie vor dem erneuten Betreten der Maschine mit anderen Parametern ausgeführt werden)
Die Grundidee ist, einen Kontrollblock mit den Bereichen aller Aufgaben, die in der Maschine (bis zu 32) sind, zu halten und diese Struktur für jede neue Aufgabe zu scannen, jedoch nicht die beste Idee für die Leistung.
Irgendeine Idee Leute?
Dies ist aus einer realen Welt Produktentwicklung genommen, ich habe es dieses Modell wegen vereinfacht. Außerdem muss ich die Lösung in C schreiben, also kann ich keine komplexen mathematischen Theorien haben :)
Sie haben die Maschine nicht gut genug definiert, z. B. den Zahlenbereich, und Sie sagen nicht, was passiert, wenn eine neue Aufgabe nicht bearbeitet werden kann. Werden alle neuen Anfragen zu diesem Zeitpunkt ausgesetzt oder sollten sie in eine Warteschlange gestellt werden, während andere neue Anfragen verarbeitet werden? Es könnte ziemlich kompliziert sein, da neue Anfragen kontinuierlich einen in der Warteschleife blockieren könnten. Wenn beispielsweise eine laufende Aufgabe die Einheiten 1-4 verarbeitet und eine neue Aufgabe für die Einheiten 3-6 in die Warteschlange gestellt wird und dann eine neue Aufgabe an die Verarbeitungseinheiten 5-8 eintrifft, könnte dies zugelassen werden, die Aufgabe jedoch in der Warteschlange ist immer noch blockiert. –