首页 > Java > java教程 > 如何使用 Java 中的递归从多个未知长度的列表中生成所有可能的组合?

如何使用 Java 中的递归从多个未知长度的列表中生成所有可能的组合?

DDD
发布: 2024-11-04 09:45:30
原创
455 人浏览过

How can I generate all possible combinations from multiple lists of unknown length using recursion in Java?

使用 Java 中的递归从多个列表中迭代生成所有组合

设想一个场景,您遇到各种各样的列表,每个都有一个未公开的长度。您的任务是生成一个包含所有独特组合可能性的单一列表。为了说明这一点,请考虑以下列表:

X: [A, B, C] 
Y: [W, X, Y, Z]
登录后复制

从这些列表中,您应该能够生成 12 种组合:

[AW, AX, AY, AZ, BW, BX, BY, BZ, CW, CX, CY, CZ]
登录后复制

如果引入了额外的包含 3 个元素的第三个列表,组合总数将扩展到 36 个。

为了实现这种复杂的组合生成,递归成为一种强大的工具:

<code class="java">void generatePermutations(List<List<Character>> lists, List<String> result, int depth, String current) {
    if (depth == lists.size()) {
        result.add(current);
        return;
    }

    for (int i = 0; i < lists.get(depth).size(); i++) {
        generatePermutations(lists, result, depth + 1, current + lists.get(depth).get(i));
    }
}</code>
登录后复制

在这个精心设计的递归算法中,参数列表代表输入列表的集合,其特征是数量和长度不确定。结果列表作为过程中生成的所有排列的存储库。参数深度和电流分别促进输入列表的遍历和单个组合的构造。

此生成函数的最终调用协调整个过程:

<code class="java">generatePermutations(lists, result, 0, "");</code>
登录后复制

通过递归和 Java 集合框架的和谐协作,该算法使您能够毫不费力地从任意大的列表集合中生成每种可以想象的组合。

以上是如何使用 Java 中的递归从多个未知长度的列表中生成所有可能的组合?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板