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;
}
War es hilfreich?

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
scroll top