Ich hab das (binäre, nicht fraktale) Rucksackproblem mal mit der der Schleife oben und dem Beispiel aus dem Buch gelöst:
int[] gewicht = {1, 1, 1, 1, 1, 10, 20, 30};
int[] wert = {1, 1, 1, 1, 1, 60, 100, 120};
int max_gewicht = 55;
11111011
[ 24, 11, 13, 30, 30, 29, 26, 12]
[104, 78, 101, 69, 64, 64, 101, 75]
max_gewicht = 105
11100011
24+11+13 +26+12 = 86
459
int max_wert = 0;
int max_int = 0;
for (int i = 0; i < Math.pow(2, gewicht.length); i++) { ...```
funktioniert zwar, ist aber eine Bitschubserei und rekursiv viel besser zu formulieren.
2^10 = 8^8 = 1024 geht natürlich schnell, für das andere, zB 100, könnte man Greedy-/Best-Ansatz verwenden, man sortiert nach Gewicht/Wert und fügt ein, bis 75 % oder nur noch 10 Gegenstände übrig sind, dann genau oben.
[Anmerkung SlaterB: 2^10 ist natürlich nicht 8^8..]