ホームページ > バックエンド開発 > PHPチュートリアル > 9 つの数値のセットにはいくつの順列が存在しますか?また、それらは PHP でどのように生成できますか?

9 つの数値のセットにはいくつの順列が存在しますか?また、それらは PHP でどのように生成できますか?

DDD
リリース: 2024-12-17 01:19:25
オリジナル
271 人が閲覧しました

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

数値のすべての順列セットの列挙

組み合わせ論の領域では、順列とは、指定されたセットの要素の順序付けされた配置を指します。 0 から 8 までの数値のセットが与えられた場合、課題は、各数値がセット内で 1 回だけ現れる、考えられるすべての順列を生成することです。

順列の計算

一度に k 個ずつ取得される、n 個の要素の置換数を計算する式は次のとおりです。

nPk = n! / (n - k)!
ログイン後にコピー

この例では、 n = 9 および k = 9 の場合、次のようになります。

9P9 = 9! = 362,880
ログイン後にコピー

したがって、指定されたセットの可能な置換は 362,880 通りあります。

PHP 実装

PHP でこれらの順列を生成する 1 つの方法は、再帰的メソッドを使用することです。アルゴリズム:

<?php
pc_permute([0, 1, 2, 3, 4, 5, 7, 8]);

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);
        }
    }
}
?>
ログイン後にコピー

サンプル出力

このコードを実行すると、次のサンプル順列が生成されます:

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 5 8 6 7
0 1 2 3 4 5 8 7 6
...
ログイン後にコピー

以上が9 つの数値のセットにはいくつの順列が存在しますか?また、それらは PHP でどのように生成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート