Der Anordnungsalgorithmus der Zeichenfolge und der Ganzzahl
In Programmierinterviews besteht eine häufige Herausforderung darin, alle möglichen Arranges einer bestimmten Zeichenfolge oder Ganzzahl zu generieren. Dies kann einen rekursiven Gebrauch beinhalten.
Verständnis Prinzipien
enthalten zwei wichtige Schritte rekursiv:
Anfangsschritte: Für ein einzelnes Element ist die Anordnung das Element selbst.
- sub -STEP: Für die Elementsammlung enthält jede Anordnungskombination jedes Element und das überschüssige Element.
-
Beispiel für menschliches Sprache
Ein einzelnes Element:
Zwei Elemente:
<code>perm(a) -> a</code>
Nach dem Login kopieren
Drei Elemente:
<code>perm(ab) ->
a + perm(b) -> ab
b + perm(a) -> ba</code>
Nach dem Login kopieren
Der rekursive Algorithmus im Pseudo -Code
c# Implementierung
<code>perm(abc) ->
a + perm(bc) -> abc, acb
b + perm(ac) -> bac, bca
c + perm(ab) -> cab, cba</code>
Nach dem Login kopieren
Dieses C# realisiert rekursiv und austausch, um alle Arrangements effektiv zu erzeugen.
<code>generatePermutations(permutation) {
if (permutation 的长度 为 0) {
打印 permutation
返回
}
对于 permutation 中的每个元素 element:
创建一个新的排列 newPermutation,移除 element
将 element 添加到 generatePermutations(newPermutation) 的结果的前面
}</code>
Nach dem Login kopieren
Die beiden Elemente im Array des Funktionsschalters, während die rekursive Funktion alle möglichen Anordnungen durchführt. Rückback -Schritte () Stellen Sie sicher, dass das Array nach der Verarbeitung einer Vereinbarung in den vorherigen Zustand zurückkehrt, um die nächste Vereinbarung zu erstellen.
Diese gestrichene Antwort bietet eine prägnantere und genauere Erklärung des rekursiven Permutationsalgorithmus, einschließlich einer klareren Pseudocode -Reposition und einer funktionalen C# -Implementierung mit Kommentaren
Das obige ist der detaillierte Inhalt vonWie können rekursive Algorithmen alle Permutationen von Strings und Ganzzahlen erzeugen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!