Hallo erstmal,
ich habe ein recht komplexes Problem zu lösen. Es geht um folgendes:
Ich habe verschiedene Zahlen - alle zwischen 0,0 und 100,0. Die Menge ist beliebig. Nun möchte ich gerne einen Algorithmus entwerfen, der mir diese Zahlen so gut wie möglich zusammensetzt um so nah wie möglich an 100 zu gelangen.
Zur Erklärung ein Beispiel:
40,2 - 22,4 - 4,6 - 19,65 - 53,33 - 12,22 - 19, 56 - .......
Hier würden nun folgende Werte genommen:
40,2 + 22,4 + 4,6 + 19,65 + 12,22 = 99,07
Das ist schon sehr nahe an 100. Die restlichen Zahlen ( sind natürlich noch mehr ) werden weiter verwurstet bis nachher nur noch ein kleiner Rest übrig ist. Bis also so viele 100er Pakete "voll" sind wie möglich.
Meine Idee war folgende:
Sämtliche Zahlen werde in eine Linear verkettete Liste eingetragen mit 2 Variablen. Einmal float ( dem Inhalt ) und bool ( ob die Zahl schon verwendet wurde ). Ich würde dann zuerst die größte Zahl suchen und mit einem Zufallsgenerator viele verschiedene Möglichkeiten durchprobieren. Nach dem Prinzip Try & Error. Wenn ich also auf ~3% an 100 rankomme den Generator zu stoppen und das nächste Paket zu starten.
Ich bin mir aber nicht sicher, ob das die cleverste Lösung ist und ob ich vllt. einen Denkfehler habe, oder ob ich die Sache komplett falsch anpacke. Wenn jemand einen Denkansatz für mich hat, wäre ich sehr dankbar.
Ich hoffe genug Informationen gegeben zu haben. Das ganze hat natürlich einen technischen Hintergrund, der hier aber nicht weiter von Bedeutung ist.
Grüße,
excelite
ich habe ein recht komplexes Problem zu lösen. Es geht um folgendes:
Ich habe verschiedene Zahlen - alle zwischen 0,0 und 100,0. Die Menge ist beliebig. Nun möchte ich gerne einen Algorithmus entwerfen, der mir diese Zahlen so gut wie möglich zusammensetzt um so nah wie möglich an 100 zu gelangen.
Zur Erklärung ein Beispiel:
40,2 - 22,4 - 4,6 - 19,65 - 53,33 - 12,22 - 19, 56 - .......
Hier würden nun folgende Werte genommen:
40,2 + 22,4 + 4,6 + 19,65 + 12,22 = 99,07
Das ist schon sehr nahe an 100. Die restlichen Zahlen ( sind natürlich noch mehr ) werden weiter verwurstet bis nachher nur noch ein kleiner Rest übrig ist. Bis also so viele 100er Pakete "voll" sind wie möglich.
Meine Idee war folgende:
Sämtliche Zahlen werde in eine Linear verkettete Liste eingetragen mit 2 Variablen. Einmal float ( dem Inhalt ) und bool ( ob die Zahl schon verwendet wurde ). Ich würde dann zuerst die größte Zahl suchen und mit einem Zufallsgenerator viele verschiedene Möglichkeiten durchprobieren. Nach dem Prinzip Try & Error. Wenn ich also auf ~3% an 100 rankomme den Generator zu stoppen und das nächste Paket zu starten.
Ich bin mir aber nicht sicher, ob das die cleverste Lösung ist und ob ich vllt. einen Denkfehler habe, oder ob ich die Sache komplett falsch anpacke. Wenn jemand einen Denkansatz für mich hat, wäre ich sehr dankbar.
Ich hoffe genug Informationen gegeben zu haben. Das ganze hat natürlich einen technischen Hintergrund, der hier aber nicht weiter von Bedeutung ist.
Grüße,
excelite
Zuletzt bearbeitet: