Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Menjana Semua Gabungan Saiz Tertentu daripada Set Aksara?

Bagaimanakah Saya Boleh Menjana Semua Gabungan Saiz Tertentu daripada Set Aksara?

Patricia Arquette
Patricia Arquetteasal
2024-11-27 12:11:13965semak imbas

How Can I Generate All Combinations of a Specific Size from a Character Set?

Menentukan Semua Gabungan Saiz Tertentu daripada Set Aksara

Siasatan ini mencari algoritma yang mampu menjana semua kombinasi potensi saiz tertentu daripada set watak yang diberikan. Mari kita mendalami penyelesaian menggunakan fungsi rekursif:

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

Pertimbangkan contoh dengan $chars = ['a', 'b', 'c']:

$output = sampling($chars, 2);
var_dump($output);

The output memaparkan semua kemungkinan kombinasi saiz 2:

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"
}

Pendekatan rekursif ini menjana semua kombinasi dengan berkesan, memastikan bahawa malah gabungan saiz yang lebih besar daripada set awal boleh dimuatkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Semua Gabungan Saiz Tertentu daripada Set Aksara?. 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