亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

Java笛卡爾積的迭代實現方式有哪些

小樊
81
2024-08-11 00:57:41
欄目: 編程語言

在Java中,實現笛卡爾積的迭代方式有以下幾種:

  1. 使用多重循環:最簡單的方式是使用多重循環來實現笛卡爾積。每個循環對應一個集合,通過嵌套循環的方式遍歷每個集合的元素,從而得到笛卡爾積。
List<List<Integer>> sets = Arrays.asList(
        Arrays.asList(1, 2),
        Arrays.asList(3, 4),
        Arrays.asList(5, 6)
);

List<List<Integer>> result = new ArrayList<>();
result.add(new ArrayList<>());

for (List<Integer> set : sets) {
    List<List<Integer>> newResult = new ArrayList<>();
    for (List<Integer> list : result) {
        for (Integer integer : set) {
            List<Integer> newList = new ArrayList<>(list);
            newList.add(integer);
            newResult.add(newList);
        }
    }
    result = newResult;
}

for (List<Integer> list : result) {
    System.out.println(list);
}
  1. 使用遞歸:可以使用遞歸的方式來實現笛卡爾積。遞歸函數的參數可以包括當前集合的索引和已經生成的笛卡爾積列表。
public static List<List<Integer>> cartesianProduct(List<List<Integer>> sets, int index) {
    List<List<Integer>> result = new ArrayList<>();
    if (index == sets.size()) {
        result.add(new ArrayList<>());
    } else {
        for (Integer integer : sets.get(index)) {
            for (List<Integer> list : cartesianProduct(sets, index + 1)) {
                List<Integer> newList = new ArrayList<>(list);
                newList.add(integer);
                result.add(newList);
            }
        }
    }
    return result;
}

List<List<Integer>> sets = Arrays.asList(
        Arrays.asList(1, 2),
        Arrays.asList(3, 4),
        Arrays.asList(5, 6)
);

List<List<Integer>> result = cartesianProduct(sets, 0);

for (List<Integer> list : result) {
    System.out.println(list);
}

以上是兩種常見的實現笛卡爾積的迭代方式,可以根據實際情況選擇合適的方式來實現。

0
庆城县| 中卫市| 德格县| 北票市| 桃江县| 莱芜市| 潞城市| 明星| 南漳县| 海阳市| 化隆| 黔西县| 罗源县| 凤翔县| 融水| 松江区| 沐川县| 华坪县| 彰化市| 南阳市| 文昌市| 靖远县| 七台河市| 会同县| 南乐县| 克山县| 伊春市| 延吉市| 即墨市| 永吉县| 莱州市| 天祝| 贵溪市| 辽阳市| 镇坪县| 兴仁县| 郎溪县| 屯留县| 泸西县| 武清区| 宜阳县|