Maison > Java > javaDidacticiel > le corps du texte

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
Libérer: 2024-11-04 09:45:30
original
418 Les gens l'ont consulté

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]
Copier après la connexion

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

[AW, AX, AY, AZ, BW, BX, BY, BZ, CW, CX, CY, CZ]
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal