Kombinationsmöglichkeiten

Status
Nicht offen für weitere Antworten.

H2SO4

Bekanntes Mitglied
Hallo!

Wie funktioniert folgendes:

Man hat ein Array mit Zahlen von 1-20. Nun soll man alle Kombinationsmöglichkeiten von 5 Zahlen ausgeben, also:

1 2 3 4 5
1 2 3 4 6
1 2 3 4 7
...

rauskommen müssten, glaube ich ;), 5/20*4/19*3/18*2/17*1/16 Kombinationen. Aber wie gesagt, es geht nicht darum die Anzahl zu berechnen, sondern die konkreten Kombinationen auszugeben.
 

H2SO4

Bekanntes Mitglied
Gibt es noch einen anderen Weg? Ich möchte nicht noch eine andere Klasse verwenden. Das Beispiel ist ausserdem für Strings. alles anzupassen wäre zu viel, wo ich doch nur alle kombinationen möchte.
 

Marco13

Top Contributor
Ohja, es wäre auch das ChoiceIterable - aber erstens ist das generisch, d.h. du kannst auch Integer statt String verwenden, und zweitens hast du hiermit die hochoffizielle Erlaubnis, das ganze in eine einzelne Methode in einer deiner schon vorhandenen Klassen zu packen ;)
 

H2SO4

Bekanntes Mitglied
Ok, getestet habe ich es jetzt mit dem CombinationIterable; Problem ist nur, dass pro Kombinationsmöglichkeit Zahlen doppelt vorkommen können. Folgendes darf nicht sein:
1 1 1 1 1
1 1 1 1 2
1 1 1 1 3
usw.

Wie müsste ich das anpassen?

Danke für die Hilfe!
 

Landei

Top Contributor
Wenn es immer nur 5 Stellen sein sollen, dann einfach BRUTE FORCE!!1!!1!!!

Java:
for(int a = 1; a <= 20; a++) {
  for(int b = 1; b <= 20; b++) {
      if (b==a) continue;
      for(int c = 1; c <= 20; c++) {
         if(c==a ||  c==b) continue;
         for(int d = 1; d <= 20; d++) {
              if(d==a || d==b || d==c) continue;
              for(int e = 1; e <= 20; e++) {
                  if(e==a || e==b || e==c || e==d) continue;
                  System.out.printf("%d %d %d %d %d %n",a,b,c,d,e); 
              }
         }
      }
  }
}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben