代码之家  ›  专栏  ›  技术社区  ›  James Raitsev

通过字符数组排列

  •  3
  • James Raitsev  · 技术社区  · 14 年前

    假设您需要发现n个不同字符的所有可能排列,比如a、b、c。你能推荐一个我可以用来完成这个任务的算法吗?一般来说,你会怎么做?

    2 回复  |  直到 14 年前
        1
  •  1
  •   cHao Hammerite    14 年前

    “Perms”是找到的排列的集合,“Used”是当前选定字符的列表。

    1. 如果n=0,则使用的是置换。把它加到烫发上,然后退回。
    2. 对于S中的每个字符C:
      1. 从S中找出n-1个字符的排列。
      2. 移除U的末端(或弹出),并将C添加到S。

    当你找到n个字符的排列后返回时,排列包含了所有可能的排列。

    注意,这都是使用集合和列表完成的。有重量更轻的替代品,但这些结构使步骤更简单,所以我使用了它们。

        2
  •  1
  •   finnw    14 年前

    有一个Java实现 here .