【发布时间】:2015-07-13 20:18:47
【问题描述】:
我想在 Java 中找到所有可能的具有给定数量的二进制排列:
- x 是每个序列中所需的个数
- n 是每个序列的所需长度
举个例子:
x=2, n=4
输出:1100, 0011, 1010, 1001, 0101, 0110
我正在寻找一种优雅而快速的方法来做到这一点。你能帮助我吗?
我已经在Print list of binary permutations 中测试了 eboix 解决方案,但不幸的是它太慢了,因为此示例中的算法正在搜索所有2^n 二进制排列。
我想查找长度为50 或100 的序列。
【问题讨论】:
-
您正在寻找combinations,而不是排列。你想一次拿 n 个东西 k。如果您想要所有设置了 2 位的 4 位数字,您希望 4 个事物的组合一次取 2 个。至少有一个 Java 组合库可以为您完成。
-
问题是:我需要“一些”具有 100 位长度和给定数量的序列。也许我应该以其他方式创建它们,因为它们中有太多 100 位长度或更多。我只需要不相似的序列。不相似的意思是序列,他们有不同的运行次数。例如:如果 x=2,n=100。我想找到一个运行一次的序列:1100000....,一个运行两次 1010000.... 如果 x=3,n = 100:我想找到一个运行 1 次的序列:1110000...,一个两次运行 101100000.... 和一次运行三个 1010100000.... 等等。
-
@Jim Mischel,我去图书馆看看,谢谢。
标签: java algorithm permutation