Pregunta

¿Por qué no es que esto produce el número correcto de permutaciones de cadenas? Para

perm("ABC", 3)

se debe imprimir 27 permutaciones diferentes.

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;
}
¿Fue útil?

Solución

Ya está calculando combinaciones en su programa. Para comb("ABC", 3) debe haber un resultado.

Si desea permutaciones lugar (seis resultados), reemplace s.Substring( i + 1 ) en la llamada de función recursiva con s.Substring(0, i) + s.Substring(i+1).

Si quieres 27 resultados, simplemente pase s en lugar de s.Substring( i + 1 ).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top