【发布时间】:2009-04-16 21:44:08
【问题描述】:
为什么这不能产生正确数量的字符串排列?对于
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;
}
【问题讨论】:
-
您的调试尝试向您展示了什么?你尝试过做什么?
-
ABC有6个排列,不是27个ABC,ACB,BAC,BCA,CAB,CBA
-
其次,除了 return 它之外,您永远不会对 permuted 做任何事情。
-
嘘,我需要组合,而不是排列。是的,我将其添加到列表中
-
啊..好的,那么我如何生成所有可能的组合? AAA、BBB、CCC、ABA、ACA。我认为前突变是不同的,但组合有重复的字母
标签: c# .net permutation