c# - 获取所有可能的单词组合

标签 c# recursion combinatorics combinations

我有一个包含 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/

相关文章:

c# - Newtonsoft.JSON 无法转换具有 TypeConverter 属性的模型

c# - 正则表达式匹配未完成

c# - AES GCM 手动 byte[] IV 和标记与加密信息的串联

java - Java中的递归理论

python - 如何从 python 中的二维列表中获取所有可能的项目组合?

algorithm - 使用组合改进计数外观的运行时间

c# - NHibernate/Fluent NHibernate 动态列映射

xml - 如何使用 XSLT 递归删除一些 xml 元素

c++ - 递归返回完整值

返回值的所有可能组合