Maison  >  Article  >  Java  >  Comment générer toutes les combinaisons uniques à partir de plusieurs listes de longueurs variables en Java ?

Comment générer toutes les combinaisons uniques à partir de plusieurs listes de longueurs variables en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-27 13:34:29255parcourir

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

Comment générer toutes les combinaisons à partir de plusieurs listes

Question :

Étant donné un nombre variable de listes de longueurs variables, déterminez comment générer une liste unique contenant toutes les combinaisons uniques d'éléments des listes d'entrée.

Par exemple :

Considérez les listes suivantes :

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

Sortie souhaitée :

12 combinaisons uniques :

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

Implémentation Java :

Utilisation de la récursion :

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

Comment ça marche :

Cette fonction utilise la récursivité pour explorer toutes les combinaisons possibles. Il conserve une chaîne actuelle représentant la combinaison partielle jusqu'à présent et incrémente la profondeur pour indiquer quelle liste est examinée. Le cas de base se produit lorsque toutes les listes ont été épuisées, auquel cas la combinaison partielle actuelle est ajoutée à la liste de résultats. Sinon, la fonction parcourt la liste actuelle et s'appelle de manière récursive, ajoutant chaque caractère à la combinaison actuelle et augmentant la profondeur.

Exemple d'utilisation :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn