Maison > développement back-end > tutoriel php > Comment puis-je générer toutes les combinaisons d'un ensemble donné en PHP à l'aide d'un algorithme récursif ?

Comment puis-je générer toutes les combinaisons d'un ensemble donné en PHP à l'aide d'un algorithme récursif ?

DDD
Libérer: 2024-11-28 22:06:11
original
269 Les gens l'ont consulté

How can I generate all combinations of a given set in PHP using a recursive algorithm?

Générer toutes les combinaisons à l'aide d'un algorithme en PHP

L'une des tâches fondamentales en informatique consiste à générer des combinaisons à partir d'un ensemble donné. Dans ce contexte, une combinaison fait référence à un sous-ensemble d'éléments de l'ensemble d'origine, avec une taille spécifiée.

Par exemple, considérons un ensemble A = {A, B, C}. Voici comment obtenir des combinaisons de différentes tailles :

Générer des combinaisons à l'aide d'un algorithme récursif

Pour résoudre ce problème, nous pouvons utiliser un algorithme récursif qui explore toutes les combinaisons possibles. . Voici une explication étape par étape :

  1. Initialisez un tableau vide $combinations pour stocker les combinaisons.
  2. Si $size est égal à 1, nous avons atteint le cas de base et peut renvoyer $combinations.
  3. Parcourir les $chars et le courant $combinations.
  4. Pour chaque combinaison et caractère, ajoutez le caractère à la combinaison et ajoutez la nouvelle combinaison à $new_combinations.
  5. Appelez récursivement la fonction d'échantillonnage avec $new_combinations mis à jour et décrémentez $size de 1.

Mise en œuvre dans PHP

function sampling($chars, $size, $combinations = []) {
    if (empty($combinations)) {
        $combinations = $chars;
    }
    if ($size == 1) {
        return $combinations;
    }
    $new_combinations = [];
    foreach ($combinations as $combination) {
        foreach ($chars as $char) {
            $new_combinations[] = $combination . $char;
        }
    }
    return sampling($chars, $size - 1, $new_combinations);
}
Copier après la connexion

Exemple

Considérons notre ensemble original A = {A, B, C}.

$chars = ['A', 'B', 'C'];
$output = sampling($chars, 2);
var_dump($output);
Copier après la connexion

Sortie

array(9) {
  [0]=>
  string(2) "AA"
  [1]=>
  string(2) "AB"
  [2]=>
  string(2) "AC"
  [3]=>
  string(2) "BA"
  [4]=>
  string(2) "BB"
  [5]=>
  string(2) "BC"
  [6]=>
  string(2) "CA"
  [7]=>
  string(2) "CB"
  [8]=>
  string(2) "CC"
}
Copier après la connexion

Cet algorithme fournit une approche systématique pour générer tous combinaisons d’une taille spécifique à partir d’un ensemble donné. Sa nature récursive permet une exploration efficace de toutes les combinaisons possibles, quelle que soit la taille de l'ensemble d'entrée.

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