为什么没有这个生产线的排列是否正确?对于

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;
}
有帮助吗?

解决方案

您已经计算组合在您的计划。对于comb("ABC", 3)应该有一个结果。

如果你想排列的,而不是(六项成果),在递归函数调用替换s.Substring( i + 1 )s.Substring(0, i) + s.Substring(i+1)

如果你想27分的结果,简单地传递,而不是s s.Substring( i + 1 )

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top