gpt4 book ai didi

java - 如何迭代独立选择的每个排列?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:26 24 4
gpt4 key购买 nike

假设我有一个列表[x1, x2, x3],其中x1x2x3 可以取 1 到 5 之间的任何值。

我想遍历每个可以创建的可能列表(从 [1, 1, 1], [1, 1, 2], . To [5, 5, 5])。这是一个简单的问题,列表中只有 3 个元素。

你可以这样做:

for x = 1; x <= 5; x++;
for y = 1; y <= 5; y++;
...
for q = 1; q <= 5; q++;
create list [x, y, ..., q];
do something with the list;

但是,如何迭代元素数量超过 10 个的每个可能列表?

Edi:我添加了 Java 作为约束条件。我只是想看看如果没有太多花哨的库调用,这将如何完成。

Edit2:我真正在寻找的是一些算法来做到这一点,而不是可以使用什么样的库来做到这一点。但我正在寻找的实际上是一种与语言无关的算法。

最佳答案

使用 Guava你可以轻松做到:

     public static void main(String[] args) {

int lowerBound = 1;
int upperBound = 5;
int setSize=3;

ContiguousSet<Integer> integers = ContiguousSet.create(Range.closed(lowerBound, upperBound), DiscreteDomain.integers());
List<Set<Integer>> sets = Lists.newArrayList();

for (int i = 0; i < setSize; i++) {
sets.add(integers);
}

Set<List<Integer>> cartesianProduct = Sets.cartesianProduct(sets);
for (List<Integer> list : cartesianProduct) {
System.out.println(list);
}
}

打印:

[1, 1, 1]
[1, 1, 2]
[1, 1, 3]
[1, 1, 4]
[1, 1, 5]
...
[5, 5, 4]
[5, 5, 5]

关于java - 如何迭代独立选择的每个排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25829540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com