Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menjana Semua Pilihatur Nombor 0-8 Menggunakan PHP?

Bagaimana untuk Menjana Semua Pilihatur Nombor 0-8 Menggunakan PHP?

DDD
DDDasal
2024-12-15 10:52:10410semak imbas

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

Mengira Pilihatur Nombor

Memandangkan set nombor dari 0 hingga 8, tugasnya adalah untuk menjana semua pilih atur yang mungkin bagi nombor ini. Dalam pilih atur, setiap nombor hanya boleh muncul sekali.

Untuk memahami masalah ini, mari kita mendalami konsep matematik pilih atur. Formula pilih atur menyatakan bahawa jumlah bilangan pilih atur bagi elemen 'n' yang diambil 'k' pada satu masa diberikan oleh:

nPk = n!/(n-k)!

Dalam kes kami, kami ingin mengubah suai semua 9 nombor, jadi k = n = 9. Ini menghasilkan 9! = 362880 pilih atur yang mungkin.

Pelaksanaan PHP

PHP menyediakan keupayaan untuk menjana pilih atur. Fungsi pc_permute() boleh digunakan untuk tujuan ini, seperti yang ditunjukkan dalam kod berikut:

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);
         }
    }
}

Contoh Output

Menggunakan fungsi pc_permute(), kami boleh mengeluarkan semua pilih atur nombor 0 hingga 8:

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

Ini akan hasilkan output berikut:

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

Atas ialah kandungan terperinci Bagaimana untuk Menjana Semua Pilihatur Nombor 0-8 Menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn