得到字母可能有变体的单词的所有排列

时间:2011-10-14 15:43:59

标签: algorithm permutation

我正在寻找以下问题的伪代码算法。

我希望获得一个单词的所有排列。 在字母表中,每个字母可能有变体。例如在法语中,字母e也可以是éèêë。 和其他字母一样......aàâä等。

现在对于任何给定的单词,我想列出所有可能的排列以及所有字母的所有变体。

输入是一个单词和所有字母及其变体,如果它们有一些。

1 个答案:

答案 0 :(得分:1)

这是一些基本的伪代码:

  1. Generate a list Perm[1...n] of all permutations without considering variants.
  2. For i = 1 to n do
  3.  For j = 1 to |Perm[i]| do
  4.   For k = 1 to #variants(Perm[i][j])
  5.    print Perm[i][1...j-1] (variant #k) Perm[i][j+1...|Perm[i]|]

用文字表示,在不考虑变量的情况下生成permuations(已经在SO上多次处理过的问题,寻找“生成排列”)。然后,对于每个排列,查看每个字母及其每个排列,打印单词,并将字母替换为其变体。