Wie kann ich anhand einer Liste von n verschiedenen Elementen durch jede einzelne Permutation der Elemente springen, die jeweils nur ein Wertepaar austauschen? (Ich nehme an, es ist möglich, es fühlt sich so an, als sollte es sein.)Durch alle Permutationen gehen, ein Austausch nach dem anderen
Was ich suche ist ein Iterator, der die Indizes des nächsten Paars von zu vertauschenden Elementen ergibt, so dass iteriert n! -1 mal wird es durch das n treten! Permutationen der Liste in einer bestimmten Reihenfolge. Wenn es erneut durchlaufen würde, würde die Liste in ihrer Startreihenfolge wiederhergestellt, was ein Bonus wäre, aber es ist keine Voraussetzung. Wenn alle Paare das erste (bzw. das letzte) Element als eines des Paares enthalten, so dass die Funktion nur einen einzigen Wert zurückgeben muss, wäre das auch ein Bonus.
Beispiel: - Für 3 Elemente können Sie das letzte Element abwechselnd mit dem ersten und zweiten Element vertauschen, um die Permutationen zu durchlaufen, nämlich: (abc) swap 0-2 => (cba) 1-2 (cab) 0-2 (bac) 1-2 (bca) 0-2 (acb).
Ich werde in C implementieren, kann aber wahrscheinlich Lösungen in den meisten Sprachen rätseln.
Fragen Sie http://stackoverflow.com/users/91671/lbushkin –