Maison >Java >javaDidacticiel >Comment puis-je générer toutes les combinaisons possibles à partir de plusieurs listes de longueur inconnue en utilisant la récursivité en Java ?

Comment puis-je générer toutes les combinaisons possibles à partir de plusieurs listes de longueur inconnue en utilisant la récursivité en Java ?

DDD
DDDoriginal
2024-11-04 09:45:30498parcourir

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

Génération itérative de toutes les combinaisons à partir de plusieurs listes à l'aide de la récursion en Java

Envisagez un scénario dans lequel vous êtes confronté à un assortiment de listes, chacun possédant une longueur non divulguée. Votre tâche est de produire une liste singulière qui intègre toutes les possibilités de combinaison uniques. Pour illustrer, considérons les listes suivantes :

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

À partir de ces listes, vous devriez pouvoir générer 12 combinaisons :

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

Si une troisième liste supplémentaire de 3 éléments était introduite, le nombre total de combinaisons passerait à 36.

Pour réaliser cette génération de combinaisons complexes, la récursivité apparaît comme un outil puissant :

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

Dans cet algorithme récursif méticuleusement conçu, les listes de paramètres représentent la collection de listes d'entrée, caractérisées par une quantité et une longueur indéterminées. La liste des résultats constitue le référentiel de toutes les permutations générées au cours du processus. Les paramètres profondeur et courant facilitent respectivement le parcours des listes d'entrée et la construction de combinaisons individuelles.

L'invocation ultime de cette fonction générative orchestre l'ensemble du processus :

<code class="java">generatePermutations(lists, result, 0, "");</code>

À travers le collaboration harmonieuse de la récursivité et du Java Collection Framework, cet algorithme vous permet de produire sans effort toutes les combinaisons imaginables à partir d'un ensemble de listes arbitrairement grand.

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