Maison >développement back-end >tutoriel php >Combien de permutations existent pour un ensemble de nombres donné et comment peuvent-elles être générées en PHP ?

Combien de permutations existent pour un ensemble de nombres donné et comment peuvent-elles être générées en PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-13 20:54:21376parcourir

How Many Permutations Exist for a Given Set of Numbers, and How Can They Be Generated in PHP?

Trouver tous les ensembles de nombres possibles à l'aide de permutations

Calculer tous les ensembles de nombres possibles à partir d'une plage donnée qui utilisent tous les nombres et permettent à chaque nombre de apparaître une seule fois implique le concept mathématique de permutations. La formule de permutation calcule le nombre d'arrangements ou d'ordres uniques d'un ensemble d'éléments.

Pour un ensemble de n nombres, où n ! représente la factorielle de n (n (n-1) (n-2) ... * 1), le nombre total de permutations est donné par :

nPk = n!/(n-k)!

Dans ce cas, avec 9 nombres et en les choisissant tous (k=n), le nombre de permutations devient :

9P9 = 362,880

Pour générer ces permutations en PHP, on peut utiliser ceci fonction fournie par le "PHP Cookbook" d'O'Reilly :

function pc_permute($items, $perms = array( )) {
    if (empty($items)) {
        print 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);
        }
    }
}

L'appel de cette fonction avec l'ensemble de nombres, tels que :

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

imprimera toutes les permutations possibles, y compris le exemples fournis :

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

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