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

与えられた一連の数値に対して順列はいくつ存在しますか?また、それらは PHP でどのように生成できるのでしょうか?

Mary-Kate Olsen
リリース: 2024-12-13 20:54:21
オリジナル
374 人が閲覧しました

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

順列を使用したすべての可能な数値セットの検索

すべての数値を使用し、各数値を使用して、指定された範囲から可能なすべての数値セットを計算します。一度だけ現れるには、順列という数学的概念が含まれます。順列式は、要素のセットの一意の配置または順序の数を計算します。

n 個の数値のセットの場合、n! n の階乗 (n (n-1) (n-2) ... * 1) を表し、順列の総数は次の式で与えられます。

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

この例では、この場合、9 つの数値があり、それらをすべて選択すると (k=n)、順列の数は次のようになります。

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

これらの順列を生成するにはPHP では、O'Reilly の「PHP Cookbook」で提供されているこの関数を使用できます。

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

この関数を次のような数値のセットで呼び出すと、

pc_permute(array(0, 1, 2, 3, 4, 5, 7, 8));
ログイン後にコピー

が出力されます。提供されている例を含む、考えられるすべての順列:

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
...
ログイン後にコピー

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

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