我有一个包含 n 个单词的列表(假设有 26 个)。现在我想获取所有可能组合的列表,但每行最多包含 k 个单词(假设为 5 个)
所以当我的单词列表是:aaa, bbb, ..., zzz 我想要得到:
aaa
bbb
...
aaabbb
aaaccc
...
aaabbbcccdddeeefff
aaabbbcccdddeeeggg
...
我想让它可变,这样它就可以处理任何 n 或 k 值。 不应该有“两次”这个词,并且每种组合都需要被采用(即使有很多)。
我怎样才能实现这一目标?
编辑:
谢谢您的回答。这不是一项任务。只是我忘记了密码的组合,并且我想确保我已经测试了所有组合。虽然我没有 26 个密码部分,但这让我更容易解释我想要的内容。
如果其他人也遇到同样的问题,此链接可能会有所帮助:
Generate word combination array in c#
最佳答案
我编写了一个简单的函数来执行此操作
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"})
关于c# - 获取所有可能的单词组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4290889/