首頁  >  文章  >  Java  >  如何在 Java 中使用遞歸從多個清單產生所有可能的組合?

如何在 Java 中使用遞歸從多個清單產生所有可能的組合?

Susan Sarandon
Susan Sarandon原創
2024-11-02 13:34:03386瀏覽

How to Generate All Possible Combinations from Multiple Lists in Java Using Recursion?

在Java 中從多個列表生成所有組合

從任意數量的列表(每個列表的長度不同)生成包含所有可能的唯一組合的單個列表,可以是具有挑戰性的任務。本文探討了使用遞歸概念的基於 Java 的解決方案。

問題陳述

給定未知數量的列表,每個列表的長度未知,目標是建立一個包含這些列表中所有可能的元素組合的列表。例如,清單X 和Y 定義為:

X: [A, B, C] 
Y: [W, X, Y, Z]

預期輸出將是一個包含12 種組合的清單:

[AW, AX, AY, AZ, BW, BX, BY, BZ, CW, CX, CY, CZ]

此解決方案利用遞歸來產生所有可能的組合。這些清單儲存在清單清單中,並建立​​一個結果清單來保存排列。 generatePermutations 方法將清單清單、結果清單、深度參數和表示目前排列的字串作為輸入。

generatePermutations 方法

<code class="java">void generatePermutations(List<List<Character>> lists, List<String> result, int depth, String current) {
    // Base case: if we've reached the end of the list of lists
    if (depth == lists.size()) {
        result.add(current);
        return;
    }

    // Get the current list at the specified depth
    List<Character> currentList = lists.get(depth);

    // Iterate over each element in the current list
    for (int i = 0; i < currentList.size(); i++) {
        // Recursively call generatePermutations to build permutations
        generatePermutations(lists, result, depth + 1, current + currentList.get(i));
    }
}</code>

對generatePermutations 方法的初始呼叫會將深度設為0,並將目前字串設為空字串。每次遞歸呼叫都會增加深度並將當前字元連接到當前字串。當深度等於列表數量時達到基本情況,此時,當前排列將會加入結果清單。

透過利用遞歸,generatePermutations 方法有效地建構了所有可能的組合輸入清單中的元素並將它們添加到結果清單中。此解決方案高效且適用於任何數量或長度的輸入清單。

以上是如何在 Java 中使用遞歸從多個清單產生所有可能的組合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn