0 Daumen
1,3k Aufrufe

Ich habe eine einfache Rechenformeln mit 4 Variablen gegeben. Außerdem sind 10 Werte für die 4 Variablen in der Formel gegeben. Mein Programm soll die 4 von den 10 Werten für die 4 Variablen in der Formel wählen, damit die Formel einen Wert ausrechnet, der möglichst nah an einem vorgegebenen Wert W ist. Am Ende sollen die besten 4 Werte in der Knsole ausgegeben werden.
Also wie ich die 10 Werte und den vorgegebenen Wert W einlesen lassen kann, ist mir klar. Aber wie soll ich in Java realisieren, dass alle Möglichkeiten (10 Werte auf 4 Variablen) für die 4 Variablen durchgegangen werden, jeweils die Differenz zu W gespeichert wird und am Ende die kleinste Differenz die Lösung aussagt.
Ich hab mir auch mal das Thema Kombinatorik angeschaut... aber demnach kann ich ja auch nicht alle Werte per Hand ausrechnen lassen, da es ja 10*9*8*7 Möglichkeiten der VErteilung gibt... Es wäre super, wenn wir zusammen einen Ansatz finden würden..
Vielen Dank :)

Avatar von

1 Antwort

+1 Daumen

Ich würde Dir empfehlen, zunächst einmal eine Funktion zu schreiben, die Dir alle \(k\)-elementigen Teilmengen einer \(n\)-elementigen Menge berechnet (in Deinem Fall ist \(k=4\) und \(n=10\)). Hierfür ist folgende Funktion hilfreich (Berechnung des Binomialkoeffizienten):

  public static int binom(int n, int k){
    if (k==n || k==0){
      return 1;
    } else {
      return binom(n-1,k-1) + binom(n-1, k);
    }
  }

Wenn Du Deine Funktion geschrieben hast, musst Du nur noch die Elemente der \(4\)-elementigen Teilmengen entsprechend permutieren und auf die Variablen verteilen.

Avatar von

Leider hab ich keine Ahnung was du mit dem permutieren meinst :|  Sryyy wenn du mir nur noch das erklären könntest, wär das TOP! :)

Permutieren meint "Vertauschen". '123' kann wie folgt permutiert werden:

'123'

'132'

'213'

'231'

'312'

'321'

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community