我正在寻找以下问题的伪代码算法。
我希望获得一个单词的所有排列。 在字母表中,每个字母可能有变体。例如在法语中,字母e也可以是éèêë。 和其他字母一样......aàâä等。
现在对于任何给定的单词,我想列出所有可能的排列以及所有字母的所有变体。
输入是一个单词和所有字母及其变体,如果它们有一些。
答案 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上多次处理过的问题,寻找“生成排列”)。然后,对于每个排列,查看每个字母及其每个排列,打印单词,并将字母替换为其变体。