Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Tạo tất cả tổ hợp kích thước cụ thể từ một tập hợp trong PHP


Để tạo tất cả tổ hợp kích thước cụ thể từ một tập hợp đơn lẻ, mã như sau:

Ví dụ

function sampling($chars, $size, $combinations = array()) { 
    // trường hợp lần lặp đầu, tổ hợp đầu tiên giống tập ký tự 
    if (empty($combinations)) { 
        $combinations = $chars; 
    } 
    // size 1 nghĩa là xong 
    if ($size == 1) { 
        return $combinations; 
    } 
    // khởi tạo mảng để chứa giá trị mới 
    $new_combinations = array(); 
    // lặp qua tổ hợp hiện tại và tập ký tự để tạo chuỗi 
    foreach ($combinations as $combination) { 
        foreach ($chars as $char) { 
            $new_combinations[] = $combination . $char; 
        } 
    } 
    // gọi lại hàm cho lần lặp tiếp theo 
    return sampling($chars, $size - 1, $new_combinations); 
} 
$chars = array('a', 'b', 'c'); 
$output = sampling($chars, 2); 
var_dump($output);

Kết quả

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

Lần lặp đầu tiên cho thấy cùng tập ký tự được hiển thị. Nếu size là 1, tổ hợp được hiển thị. Mảng được khởi tạo là 'new_combinations' và lặp qua bằng 'forloop', mọi ký tự trong chuỗi được nối với mọi ký tự khác. Hàm 'sampling' được gọi với tham số (chuỗi, kích thước chuỗi và mảng).