Heim  >  Artikel  >  Java  >  Wie generiert man in Java alle eindeutigen Kombinationen aus mehreren Listen unterschiedlicher Länge?

Wie generiert man in Java alle eindeutigen Kombinationen aus mehreren Listen unterschiedlicher Länge?

Barbara Streisand
Barbara StreisandOriginal
2024-10-27 13:34:29255Durchsuche

How to Generate All Unique Combinations from Multiple Lists of Varying Lengths in Java?

So generieren Sie alle Kombinationen aus mehreren Listen

Frage:

Angegeben eine variable Zahl Bestimmen Sie anhand von Listen unterschiedlicher Länge, wie eine einzelne Liste generiert werden soll, die alle eindeutigen Kombinationen von Elementen aus den Eingabelisten enthält.

Zum Beispiel:

Betrachten Sie die folgenden Listen:

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

Gewünschte Ausgabe:

12 einzigartige Kombinationen:

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

Java-Implementierung:

Rekursion verwenden:

<code class="java">import java.util.List;

public class Permutations {

    public static void main(String[] args) {
        List<List<Character>> lists = List.of(List.of('A', 'B', 'C'), List.of('W', 'X', 'Y', 'Z'));
        List<String> result = new ArrayList<>();
        generatePermutations(lists, result, 0, "");
        System.out.println(result);
    }

    private static 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>

Wie es funktioniert:

Diese Funktion verwendet Rekursion, um alle möglichen Kombinationen zu erkunden. Es verwaltet eine aktuelle Zeichenfolge, die die bisherige Teilkombination darstellt, und erhöht die Tiefe, um anzugeben, welche Liste untersucht wird. Der Basisfall tritt ein, wenn alle Listen erschöpft sind. Zu diesem Zeitpunkt wird die aktuelle Teilkombination zur Ergebnisliste hinzugefügt. Andernfalls durchläuft die Funktion die aktuelle Liste und ruft sich selbst rekursiv auf, fügt jedes Zeichen zur aktuellen Kombination hinzu und erhöht die Tiefe.

Beispielverwendung:

<code class="java">Input: lists = [[A, B, C], [W, X, Y, Z]]

Output: [AW, AX, AY, AZ, BW, BX, BY, BZ, CW, CX, CY, CZ]</code>

Das obige ist der detaillierte Inhalt vonWie generiert man in Java alle eindeutigen Kombinationen aus mehreren Listen unterschiedlicher Länge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn