Alle Kombinationen in einem Array abrufen

8

Angenommen, ich habe das folgende Array:

%Vor%

Wie kann ich alle möglichen Kombinationen erzeugen, die nur zwei Zeichen enthalten und keine zwei gleich (z. B. AB wäre gleich BA ). Wenn Sie zum Beispiel das obige Array verwenden, würde dies Folgendes bewirken:

%Vor%

Bitte beachten Sie, dass dieses Beispiel vereinfacht wurde. Das Array und die Länge der erforderlichen Zeichenfolge sind größer.

Ich würde es wirklich schätzen, wenn jemand helfen könnte.

    
nfplee 13.08.2009, 15:47
quelle

9 Antworten

6

Diese sollten Ihnen einen Ausgangspunkt geben:
Ссылка < br> Ссылка

    
Victor Hurdugaci 13.08.2009, 15:53
quelle
5

Lasst uns es erweitern, also können wir vielleicht das Muster sehen:

%Vor%

Ich sehe hier zwei Schleifen.

  • Die erste (äußere) Schleife geht von 0 bis 3 (arr.Length - 1)
  • Die zweite (innere) Schleife geht vom äußeren Schleifenzähler + 1 nach 4 (arr.Length)

Jetzt sollte es einfach zu übersetzen sein!

    
Arjan Einbu 13.08.2009 15:53
quelle
1

Da die Reihenfolge keine Rolle spielt, sind dies tatsächlich Kombinationen und keine Permutationen. In jedem Fall gibt es einen Beispielcode hier (Sie möchten den Abschnitt mit dem Titel "Kombinationen (dh ohne Wiederholung) ".

    
Matt J 13.08.2009 15:55
quelle
1

Was Sie fordern, sind Kombinationen, keine Permutationen (der letztere Begriff impliziert, dass Ordnung wichtig ist). Wie auch immer, es ist ein klassischer Gebrauch für Rekursion. Im Pseudocode:

%Vor%     
Alex Martelli 13.08.2009 15:59
quelle
0
%Vor%     
JSBձոգչ 13.08.2009 15:58
quelle
0

Es ist die Summe von 1 bis n-1 oder n (n-1) / 2.

%Vor%

Offensichtlich könnte man das n * (n - 1) verallgemeinern, indem man ein Paar Fakultäten für alles verwendet, was man versucht (string size).

    
stevedbrown 13.08.2009 15:58
quelle
0

Wurde nicht getestet und nicht am schnellsten, aber:

%Vor%

Anruf:

%Vor%     
Kamarey 13.08.2009 16:01
quelle
0

Schrieb eine Antwort für eine Frage, die als doppelt markiert wurde, und zeigte hier.

%Vor%

Erzeugt die richtige Ausgabe, wenn in VS2013 in die Konsole aufgezählt wird. SelectMany reduziert die interne IEnumerable , die von der inneren Select generiert wurde.

    
Adam Kewley 22.11.2013 16:40
quelle
-1

Was Sie suchen, ist eine doppelte Schleife in der Form des folgenden Pseudocodes.

%Vor%     
user152108 13.08.2009 15:56
quelle

Tags und Links