创建字符串排列

时间:2009-04-16 21:44:09

标签: c# .net permutation

为什么这不会产生正确数量的字符串排列?对于

perm("ABC", 3)

它应该打印27种不同的排列。

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;
}

1 个答案:

答案 0 :(得分:2)

您已在计算中计算combinations。对于comb("ABC", 3),应该有一个结果。

如果您想要permutations(六个结果),请使用s.Substring( i + 1 )替换递归函数调用中的s.Substring(0, i) + s.Substring(i+1)

如果您想要27个结果,只需传递s而不是s.Substring( i + 1 )