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:
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.
Lasst uns es erweitern, also können wir vielleicht das Muster sehen:
%Vor%Ich sehe hier zwei Schleifen.
Jetzt sollte es einfach zu übersetzen sein!
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%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).
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.
Was Sie suchen, ist eine doppelte Schleife in der Form des folgenden Pseudocodes.
%Vor%Tags und Links c#