2010-07-20 57 views
3

假设您需要发现'n'个不同字符的所有可能的排列,比如'a','b','c'。你能提出一个我可以用来完成这个任务的算法吗?一般来说,你会怎么做呢?通过字符数组进行排列

回答

1

设'Perms'为找到的排列集合,'Used'为当前所选字符的列表。

要求n个字符的排列从一组S:

  1. 如果n = 0,则使用是置换。将它添加到Perms并返回。
  2. 对于S中的每个字符C:选自S
    1. 删除C和附加(或推)到U.
    2. 查找n-1个字符的排列来自酿酒
    3. 删除的结束(或流行)U,并添加C到S.

当你从发现ñ字符的排列返回,烫发包含了所有可能的排列。

请注意,这些都是使用集合和列表完成的。有更轻的选择,但这些结构使步骤更直接,所以我使用它们。

相关问题