java - 在java中生成没有重复/排列的变体

标签 java algorithm permutation

我必须生成所有不重复数字 0 - 9 的变体。

它们的长度可以从1到10。我真的不知道如何解决它,尤其是如何避免重复。

例子: 变化长度:4 随机变化:9856、8753、1243、1234 等(但不是 9985 - 包含重复)

你能帮帮我吗?或者你能给我代码吗?

最佳答案

要查找的关键字是排列。有大量免费的源代码可以执行它们。

至于避免重复,我建议采用一种简单的递归方法:对于每个数字,您都可以选择是否将其纳入您的变体中,因此您的递归会通过数字计数并 fork 为两个递归调用,其中一个数字被包括在内,一个被排除在外。然后,在您到达最后一位数字后,每个递归本质上都会为您提供一个(唯一的,已排序的)无重复数字列表。然后,您可以创建此列表的所有可能排列,并组合所有这些排列以获得最终结果。

(和duffymo说的一样:我不会为此提供代码)

高级说明:递归基于 0/1(排除、包含),它可以直接转换为位,因此是整数。因此,为了在不实际执行递归本身的情况下获得所有可能的数字组合,您可以简单地使用所有 10 位整数并遍历它们。然后解释数字,使得设置的位对应于包括需要排列的列表中的数字。

关于java - 在java中生成没有重复/排列的变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1900197/

相关文章:

java - Spring与JMS集成配置文件错误

algorithm - 2-CNF SAT 如何在 P 中,而 3-CNF SAT 在 NPC 中?

java - 霍纳算法的递归返回错误结果

Python做排列

java - 仅在开发环境中使用 Spring 过滤器

Java Spring : Error message "no declaration can be found for element ' util:constant'

java - 将 CompletableFuture 与 EJb 结合使用时遇到困难

mysql - MySQL 中的深度优先搜索

algorithm - python : all possible words (permutations) of fixed length in mini-alphabet

python - 在Python中生成特定的排列模式