Erstellen von String-Permutationen
-
09-09-2019 - |
Frage
Warum funktioniert das nicht die richtige Anzahl von String-Permutationen erzeugen? Für
perm("ABC", 3)
sollte es 27 verschiedene Permutationen drucken.
private static List<string> permutated = new List<string>(30000);
public static List<string> perm(string s, int k) { return comb(s, "", k); }
private static List<string> perm(string s, string prefix, int k)
{
if (k == 0)
{
permutated.Add(prefix);
}
else
{
for (int i = 0; i < s.Length; i++)
{
perm( s.Substring( i + 1 ), prefix + s[i], k - 1 );
}
}
return permutated;
}
Lösung
Sie sind die Berechnung bereits Kombinationen in Ihrem Programm . Für comb("ABC", 3)
sollte es ein Ergebnis sein.
Wenn Sie Permutationen statt (sechs Treffer), s.Substring( i + 1 )
in dem rekursiven Funktionsaufruf ersetzen mit s.Substring(0, i) + s.Substring(i+1)
.
Wenn Sie 27 Ergebnisse wollen, einfach passieren s
statt s.Substring( i + 1 )
.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow