Wie splitte ich ein Array in 3 gleichwertige Arrays, wobei die Summe der Zahlen im Array so "nah" wie möglich ist (Java)?


27.07.2022, 13:49

Du kannst dir das praktisch so vorstellen:

Wir berechnen die Summe der Werte aus dem Main-Array (Array(2,8,4,12,7,)) also 2 + 8 + 4 + 12 + 7 + 9 = 42.

Diese Zahl teilen wir durch 3 (weil ich 3 Arrays will), also 42 / 3 = 14.

Dann möchte ich 3 Arrays erstellen, wobei die Summe der Zahlen im Array so nah wie möglich bei der Zahl 14 (in diesem Beispiel) ist.

Praktisch sind dann im Array1(2,8,4) = 14, Array2(12) = 12 und Array3(7,9) = 16. Somit hätte ich dann das Array in drei 3 Arrays aufgeteilt wobei die chronologische Reihenfolge der Zahlen aus dem 1. Array beibehalten wird und jedes Array so nah wie möglich an der Zahl 14 ist.

Destranix  27.07.2022, 13:37

Deine Kriterien sind nicht wirklich klar, die müsstest du genauer formulieren.

HakanBlue 
Fragesteller
 27.07.2022, 13:50

Ich hab eine Ergänzung zu meiner Frage geschrieben.

2 Antworten

Das sollte sich recht einfach realisieren lassen:

Du gehst den Array schrittweise durch uns summierst solange auf, bis du nah am Durchschnitt bist.

Das machst du einmal von vorne und einmal von hinten.

Und dann stehst du vor jeweils einer Entscheidung, ob du das nächste Element zum linken oder zum rechten Array hinzufügen möchtest oder ob du es in der Mitte lassen möchtest.

Gibt aber natürlich auch echt doofe Szenarien, so wie z.B.:

1, 1, 9999, 1, 1, 1

Aber da musst du halt dann abwägen, ob du lieber

1, 1, | 9999, | 1, 1, 1

oder

1, 1, 9999, | 1, | 1, 1

oder dergleichen hättest. Oder auch:

1, 1, 1, 1, 1

Du musst dir halt dann eine Metrik ausdenken, wie du das am liebsten hättest, aber an sich lässt sich das auf jeweils wenige Entscheidungen runterbrechen.