【问题标题】:Generate all permutations in Java [duplicate]在Java中生成所有排列[重复]
【发布时间】:2011-05-03 23:01:06
【问题描述】:

可能重复:
Generating all permutations of a given string

我在 Java 中有一个任意长度的数组,我想生成它们所有可能的排列。对固定长度执行此操作的简单方法是一系列嵌套的 for 循环,但由于数组的长度未知,所以这里不是一个选项。有没有一种简单的方法可以在 Java 中实现这一点?

【问题讨论】:

  • 只需在搜索框中输入[java] permutation...
  • 如果是数组,可以使用array.length;如果它是一个列表,你可以使用 list.size()。我不明白“不是一种选择”。
  • @duffymo:所以我希望看到您在获得代码中的数组长度后即时生成嵌套的 for 循环...
  • 检查 guava 的 Collections2.permutation: code.google.com/p/guava-libraries/source/browse/guava/src/com/…
  • @JanZyka - 这与嵌套循环无关,您只需要一个堆栈数据结构。归根结底,所有流控制都只是 ifs 和 gotos。

标签: java permutation


【解决方案1】:

使用递归函数,而不是循环。每次调用该方法时都应该在数组的较小部分上,并在长度 = 0 时停止。这个link 应该可以帮助您设计函数。

【讨论】:

    【解决方案2】:

    就性能而言,它可能是最佳的,也可能不是最佳的,但是如果您正在寻找一种方法来编写相对较少的代码并使其清晰和可维护,那么您需要一种递归方法而不是嵌套循环.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      相关资源
      最近更新 更多