我有一个n个单词的列表(比方说26)。现在我想获得所有可能组合的列表,但每行最多k个单词(假设为5)
所以当我的单词列表是:aaa,bbb,...,zzz 我想得到:
aaa
bbb
...
aaabbb
aaaccc
...
aaabbbcccdddeeefff
aaabbbcccdddeeeggg
...
我想让它变量,以便它可以使用任何n或k值。 应该没有两次任何一个词,每个组合都需要采取(即使有很多)。
我怎么能实现这个目标?
编辑:
感谢您的回答。这不是一项任务。只是我忘记了密码的组合,我想确保我已经测试了所有组合。虽然我没有26个密码部分,但这使我更容易解释我想要的东西。
如果有其他人有同样的问题,这个链接可能会有所帮助:
Generate word combination array in c#
答案 0 :(得分:3)
我写了一个简单的函数来做到这一点
private string allState(int index,string[] inStr)
{
string a = inStr[index].ToString();
int l = index+1;
int k = l;
var result = string.Empty;
var t = inStr.Length;
int i = index;
while (i < t)
{
string s = a;
for (int j = l; j < k; j++)
{
s += inStr[j].ToString();
}
result += s+",";
k++;
i++;
}
index++;
if(index<inStr.Length)
result += allState(index, inStr);
return result.TrimEnd(new char[] { ',' });
}
allState(0, new string[] { "a", "b", "c"})
答案 1 :(得分:2)
您可以查看this
但是,如果您需要获得大量组合(数千万),则应使用延迟评估来生成组合。