Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah saya boleh menjana semua kombinasi set yang diberikan dalam PHP menggunakan algoritma rekursif?

Bagaimanakah saya boleh menjana semua kombinasi set yang diberikan dalam PHP menggunakan algoritma rekursif?

DDD
Lepaskan: 2024-11-28 22:06:11
asal
235 orang telah melayarinya

How can I generate all combinations of a given set in PHP using a recursive algorithm?

Menjana Semua Gabungan Menggunakan Algoritma dalam PHP

Salah satu tugas asas dalam sains komputer ialah menjana gabungan daripada set tertentu. Dalam konteks ini, gabungan merujuk kepada subset unsur daripada set asal, dengan saiz yang ditentukan.

Sebagai contoh, pertimbangkan set A = {A, B, C}. Begini cara kita boleh mendapatkan gabungan pelbagai saiz:

Menjana Gabungan Menggunakan Algoritma Rekursif

Untuk menangani masalah ini, kami boleh menggunakan algoritma rekursif yang meneroka semua kemungkinan kombinasi . Berikut ialah pecahan langkah demi langkah:

  1. Mulakan tatasusunan kosong $kombinasi untuk menyimpan gabungan.
  2. Jika $size bersamaan dengan 1, kami telah mencapai kes asas dan boleh mengembalikan $kombinasi.
  3. Lelaran melalui $chars dan semasa $combinations.
  4. Untuk setiap gabungan dan aksara, tambahkan aksara pada gabungan dan tambahkan gabungan baharu pada $new_combinations.
  5. Panggil secara rekursif fungsi pensampelan dengan $new_combinations yang dikemas kini dan pengurangan $size by 1.

Pelaksanaan dalam PHP

function sampling($chars, $size, $combinations = []) {
    if (empty($combinations)) {
        $combinations = $chars;
    }
    if ($size == 1) {
        return $combinations;
    }
    $new_combinations = [];
    foreach ($combinations as $combination) {
        foreach ($chars as $char) {
            $new_combinations[] = $combination . $char;
        }
    }
    return sampling($chars, $size - 1, $new_combinations);
}
Salin selepas log masuk

Contoh

Mari kita pertimbangkan set asal kami A = {A, B, C}.

$chars = ['A', 'B', 'C'];
$output = sampling($chars, 2);
var_dump($output);
Salin selepas log masuk

Output

array(9) {
  [0]=>
  string(2) "AA"
  [1]=>
  string(2) "AB"
  [2]=>
  string(2) "AC"
  [3]=>
  string(2) "BA"
  [4]=>
  string(2) "BB"
  [5]=>
  string(2) "BC"
  [6]=>
  string(2) "CA"
  [7]=>
  string(2) "CB"
  [8]=>
  string(2) "CC"
}
Salin selepas log masuk

Algoritma ini menyediakan pendekatan sistematik untuk menjana semua kombinasi saiz tertentu daripada set tertentu. Sifat rekursifnya membolehkan penerokaan cekap semua kombinasi yang mungkin, tanpa mengira saiz set input.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menjana semua kombinasi set yang diberikan dalam PHP menggunakan algoritma rekursif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan