Frage
Ich habe ein Array wie unter
int[] array = new array[n];// n may be 2,3,4
Beispiel für N = 4
int[] array = new array[4];
array[0] = 2;
array[1] = 4;
array[2] = 6;
array[3] = 8;
, wie ich alle unrepeated Kombination dieses Arrays berechnen, ohne Linq Verwendung innerhalb können?
2,4,6,8
2,4,8,6
2,8,6,4
2,6,4,6
8,6,4,2
2,4,6,8
.......
.......
.......
Lösung
Hier ist eine ziemlich flexibel C # -Implementierung mit Iteratoren.
Andere Tipps
Nun, da Sie für alle unrepeated Kombinationen suchen, dass es bedeutet, N sein wird! solche Kombinationen ... (also in Ihrem Fall, N! = 4! = 24 solche Kombinationen).
Wie ich bin in der Mitte dieses der Entsendung, dommer hat eine gute Umsetzung hingewiesen.
Just gewarnt werden, dass es wirklich für große Werte von N langsam bekommen wird (da es N! Permutationen).
Denken Sie über die beiden möglichen Zustände der Welt, um zu sehen, ob das ein Licht erscheinen läßt.
1) Es gibt keine Betrogenen in meinem Array (d. Jede Zahl im Array ist einzigartig). In diesem Fall, wie viele mögliche Permutationen gibt es?
2) Es gibt eine einzige Betrogene im Array. Also, von der Anzahl der Permutationen, die Sie teilweise berechnet man, wie viele sind nur dupliziert
Hmmm, lässt nehmen drei Elementanordnung der Einfachheit halber
1,3,5 hat, wie viele Permutationen?
1,3,5
1,5,3
3,1,5
3,5,1
5,1,3
5,3,1
So sechs Permutationen
Nun, was passiert, wenn wir die Liste ändern 1,5,5 zu sagen?
Wir bekommen
1,5,5
5,1,5
5,5,1
Meine Frage an Sie wäre, wie kann man dies über factorials ausdrücken?
Vielleicht versuchen, alle Permutationen mit einem Vier-Element-Array zu schreiben und sehen, ob die Glühbirne erlischt?