Maison >développement back-end >tutoriel php >Comment générer toutes les permutations de nombres 0 à 8 en utilisant PHP ?

Comment générer toutes les permutations de nombres 0 à 8 en utilisant PHP ?

DDD
DDDoriginal
2024-12-15 10:52:10408parcourir

How to Generate All Permutations of Numbers 0-8 Using PHP?

Calcul des permutations de nombres

Étant donné un ensemble de nombres de 0 à 8, la tâche est de générer toutes les permutations possibles de ces nombres. Dans une permutation, chaque nombre ne peut apparaître qu'une seule fois.

Pour comprendre ce problème, approfondissons le concept mathématique des permutations. La formule des permutations indique que le nombre total de permutations de 'n' éléments pris 'k' à la fois est donné par :

nPk = n!/(n-k)!

Dans notre cas, nous voulons permuter les 9 nombres, donc k = n = 9. Cela donne 9 ! = 362880 permutations possibles.

Implémentation PHP

PHP fournit des capacités pour générer des permutations. La fonction pc_permute() peut être utilisée à cette fin, comme démontré dans le code suivant :

function pc_permute($items, $perms = array()) {
    if (empty($items)) { 
        echo join(' ', $perms) . "\n";
    }  else {
        for ($i = count($items) - 1; $i >= 0; $i--) {
             $newitems = $items;
             $newperms = $perms;
             list($foo) = array_splice($newitems, $i, 1);
             array_unshift($newperms, $foo);
             pc_permute($newitems, $newperms);
         }
    }
}

Exemple de sortie

En utilisant la fonction pc_permute(), nous peut afficher toutes les permutations des nombres 0 à 8 :

pc_permute(array(0, 1, 2, 3, 4, 5, 7, 8));

Cela générera ce qui suit sortie :

0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 8 7
0 1 2 3 4 5 7 6 8
0 1 2 3 4 5 7 8 6
0 1 2 3 4 6 5 7 8
0 1 2 3 4 6 7 8 5
0 1 2 3 4 7 5 6 8
0 1 2 3 4 7 5 8 6
0 1 2 3 4 7 6 5 8
0 1 2 3 4 7 6 8 5
0 1 2 3 4 7 8 5 6
0 1 2 3 4 7 8 6 5
0 1 2 3 4 8 5 6 7
0 1 2 3 4 8 5 7 6
0 1 2 3 4 8 6 5 7
0 1 2 3 4 8 6 7 5
0 1 2 3 4 8 7 5 6
0 1 2 3 4 8 7 6 5
0 1 2 3 5 4 6 7 8
0 1 2 3 5 4 6 8 7
0 1 2 3 5 4 7 6 8
0 1 2 3 5 4 7 8 6
0 1 2 3 5 4 8 6 7
0 1 2 3 5 4 8 7 6
0 1 2 3 5 6 4 7 8
0 1 2 3 5 6 4 8 7
0 1 2 3 5 6 7 4 8
0 1 2 3 5 6 7 8 4
0 1 2 3 5 6 8 4 7
0 1 2 3 5 6 8 7 4
0 1 2 3 5 7 4 6 8
0 1 2 3 5 7 4 8 6
0 1 2 3 5 7 6 4 8
0 1 2 3 5 7 6 8 4
0 1 2 3 5 7 8 4 6
0 1 2 3 5 7 8 6 4
0 1 2 3 5 8 4 6 7
0 1 2 3 5 8 4 7 6
0 1 2 3 5 8 6 4 7
0 1 2 3 5 8 6 7 4
0 1 2 3 5 8 7 4 6
0 1 2 3 5 8 7 6 4
0 1 2 3 6 4 5 7 8
0 1 2 3 6 4 5 8 7
0 1 2 3 6 4 7 5 8
0 1 2 3 6 4 7 8 5
0 1 2 3 6 4 8 5 7
0 1 2 3 6 4 8 7 5
0 1 2 3 6 5 4 7 8
0 1 2 3 6 5 4 8 7
0 1 2 3 6 5 7 4 8
0 1 2 3 6 5 7 8 4
0 1 2 3 6 5 8 4 7
0 1 2 3 6 5 8 7 4
0 1 2 3 6 7 4 5 8
0 1 2 3 6 7 4 8 5
0 1 2 3 6 7 5 4 8
0 1 2 3 6 7 5 8 4
0 1 2 3 6 7 8 4 5
0 1 2 3 6 7 8 5 4
0 1 2 3 6 8 4 5 7
0 1 2 3 6 8 4 7 5
0 1 2 3 6 8 5 4 7
0 1 2 3 6 8 5 7 4
0 1 2 3 6 8 7 4 5
0 1 2 3 6 8 7 5 4
0 1 2 3 7 4 5 6 8
0 1 2 3 7 4 5 8 6
0 1 2 3 7 4 6 5 8
0 1 2 3 7 4 6 8 5
0 1 2 3 7 4 8 5 6
0 1 2 3 7 4 8 6 5

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