笛卡尔乘积用java代码演示一遍
时间: 2024-03-02 22:53:02 浏览: 23
好的,以下是Java代码演示笛卡尔积的过程:
```java
import java.util.ArrayList;
import java.util.List;
public class CartesianProductDemo {
public static void main(String[] args) {
List<Integer> A = new ArrayList<>();
A.add(1);
A.add(2);
A.add(3);
List<String> B = new ArrayList<>();
B.add("a");
B.add("b");
B.add("c");
List<List<Object>> result = cartesianProduct(A, B);
System.out.println(result);
}
public static List<List<Object>> cartesianProduct(List<?>... lists) {
int total = 1;
for (List<?> list : lists) {
total *= list.size();
}
List<List<Object>> result = new ArrayList<>(total);
for (int i = 0; i < total; i++) {
result.add(new ArrayList<>());
}
for (int i = 0; i < lists.length; i++) {
List<?> list = lists[i];
int repeat = total;
for (int j = 0; j < i; j++) {
repeat /= lists[j].size();
}
int index = 0;
for (int j = 0; j < total; j += repeat) {
for (int k = 0; k < repeat; k++) {
result.get(j + k).add(list.get(index));
}
index++;
if (index == list.size()) {
index = 0;
}
}
}
return result;
}
}
```
上述代码演示了如何计算两个集合 A 和 B 的笛卡尔积。运行结果为:[[1, a], [2, a], [3, a], [1, b], [2, b], [3, b], [1, c], [2, c], [3, c]]。其中,每个元素都是由 A 和 B 中的元素组成的有序对。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)