我正在寻找以下问题的伪代码算法。
我想得到一个词的所有排列。 在字母表中,每个字母都可能有变体。例如在法语中,字母 e 也可以是 é è ê ë。 与其他字母相同... aàâä 等
现在对于任何给定的单词,我想列出所有字母的所有变体的所有可能排列。
输入是一个单词和一个所有字母及其变体(如果有的话)。
最佳答案
这是一些基本的伪代码:
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]|]
换句话说,在不考虑变体的情况下生成排列(这个问题已经在 SO 上多次处理过,请查找“生成排列”)。然后,对于每个排列,查看每个字母,并针对它的每个排列,打印单词,并将字母替换为它的变体。
关于algorithm - 获取字母可能有变体的单词的所有排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7770103/