如何生成单词列表的所有唯一组合?

时间:2011-07-08 10:24:26

标签: algorithm

我有一个单词列表,如:

List={"word1", "word2", "word3", ....}

如何生成“双字长”列表 所有这些单词的独特组合?

例如,如果上面的列表只包含三个 然后输出可能就像:

word1 word2
word1 word3
word2 word1
word2 word4
word3 word1
word3 word2

另外,请注意"word1 word2"不是 与"word2 word1"相同。

我知道这样一个最简单的解决方案:

for i=1 to N
  for j=1 to N
    if(i!=j) then
      print List[i]+" "+List[j]

但这有O(n 2 )的复杂性。那是什么呢 具有最差情况的最佳算法 实现同样的复杂性。

1 个答案:

答案 0 :(得分:8)

算法的输出包含O(n^2)个元素。由于需要注意每个输出元素,因此您不能希望实现比O(n^2)时间复杂度更好的效果。