Heim > Backend-Entwicklung > C++ > Wie kann ich alle Permutationen eines Arrays generieren?

Wie kann ich alle Permutationen eines Arrays generieren?

Mary-Kate Olsen
Freigeben: 2024-12-18 02:27:17
Original
390 Leute haben es durchsucht

How Can I Generate All Permutations of an Array?

Erzeugen von Permutationen eines Arrays

Die Permutation eines Arrays umfasst eine einzigartige Anordnung seiner Elemente. Für ein N-Element-Array gibt es N! (N-faktorielle) unterschiedliche Permutationen. Ziel dieser Frage ist es, einen Algorithmus zum Generieren dieser Permutationen zu skizzieren.

Algorithmus:

Berücksichtigen Sie die folgenden Schritte zum Generieren von Array-Permutationen:

  1. Initialisieren: Beginnen Sie damit, das erste Element als Drehpunkt zu nehmen und es an der ersten Position des Stroms zu platzieren Permutationsliste.
  2. Rekursive Permutation: Schleife durch die verbleibenden Elemente des Arrays. Tauschen Sie jedes Element mit dem Pivot aus, rufen Sie die Permutationsfunktion rekursiv mit dem aktualisierten Pivot an der nächsten Position auf und tauschen Sie erneut, um die ursprüngliche Reihenfolge wiederherzustellen.

    • Beispielsweise gegeben {3,4,6, 2,1} mit Pivot 3 iterieren Sie über {4,6,2,1}. Sie tauschen 4 mit 3, permutieren rekursiv {4, 3, 2, 1} mit Pivot 4 und tauschen zurück.
  3. Beendigung: Wenn die Schleife erreicht Letztes Element, die aktuelle Permutationsliste ist vollständig. Geben Sie es aus.

Implementierung:

Hier ist eine Python-Implementierung des obigen Algorithmus:

def generate_permutations(arr):
  perms = []
  _generate_permutations_helper(arr, 0, perms)
  return perms


def _generate_permutations_helper(arr, start, perms):
  if start == len(arr) - 1:
    perms.append(arr.copy())
  else:
    for i in range(start, len(arr)):
      arr[start], arr[i] = arr[i], arr[start]
      _generate_permutations_helper(arr, start + 1, perms)
      arr[start], arr[i] = arr[i], arr[start]
Nach dem Login kopieren

Beispiel Verwendung:

arr = [3, 4, 6, 2, 1]
permutations = generate_permutations(arr)
print(permutations)  # [[3, 4, 6, 2, 1], [3, 4, 2, 6, 1], ... ]
Nach dem Login kopieren

Hinweis: Diese Methode kann für die Speichernutzung optimiert werden, indem nur die Start- und Endelemente der aktuellen Permutationen beibehalten werden und die vollständige Liste erst am erstellt wird Ende, wodurch die Notwendigkeit entfällt, die gesamte Liste der Permutationen im Speicher zu behalten.

Das obige ist der detaillierte Inhalt vonWie kann ich alle Permutationen eines Arrays generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage