Maison > développement back-end > tutoriel php > Comment générer toutes les combinaisons d'une taille spécifique à partir d'un seul ensemble en PHP ?

Comment générer toutes les combinaisons d'une taille spécifique à partir d'un seul ensemble en PHP ?

DDD
Libérer: 2024-11-29 01:03:11
original
251 Les gens l'ont consulté

How to Generate All Combinations of a Specific Size from a Single Set in PHP?

Comment générer toutes les combinaisons d'une taille spécifique à partir d'un seul ensemble en PHP

Étant donné un tableau de caractères et une taille de combinaison souhaitée, la tâche consiste à générer toutes les combinaisons possibles de cette taille spécifique. Cet article explore un algorithme pour y parvenir en utilisant PHP, en le différenciant des permutations où les caractères répétitifs ne sont pas autorisés.

Algorithme

L'algorithme est basé sur la récursivité. Voici une explication détaillée :

  1. Initialisation : Si l'algorithme est exécuté pour la première fois, l'ensemble initial de combinaisons est défini sur le tableau de caractères donné.
  2. Vérification de la taille : Si la taille de combinaison souhaitée est 1, l'ensemble actuel de combinaisons est renvoyé sous la forme résultat.
  3. Création de nouvelles combinaisons : Pour chaque combinaison de l'ensemble actuel et chaque caractère du tableau d'origine, une nouvelle combinaison est créée en concaténant la combinaison actuelle et le caractère.
  4. Appel récursif : La fonction est appelée de manière récursive avec le nouvel ensemble de combinaisons et un décrément de la combinaison souhaitée size.
  5. Résultat : Le résultat final est la sortie renvoyée une fois la récursivité terminée.

Exemple d'implémentation

Vous trouverez ci-dessous un exemple fonctionnel dans PHP :

function sampling($chars, $size, $combinations = array()) {

    if (empty($combinations)) {
        $combinations = $chars;
    }

    if ($size == 1) {
        return $combinations;
    }

    $new_combinations = array();
    foreach ($combinations as $combination) {
        foreach ($chars as $char) {
            $new_combinations[] = $combination . $char;
        }
    }

    return sampling($chars, $size - 1, $new_combinations);

}

// Example
$chars = array('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

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