Jak wyświetlić k-elementowe kombinacje bez powtórzeń z n-elementowego zbioru?
Sep 16
Chciałbyś wyświetlić na ekranie wszystkie k-elementowe kombinacje z n-elementowego zbioru danych? Wystarczy, że zaimplementujesz w swoim skrypcie następującą funkcję.
<?
function kombinacje($zbior, $k) {
global $wynik;
$dlugosc = count($zbior);
if($dlugosc > $k)
foreach($zbior as $klucz => $wart)
kombinacje(array_diff_key($zbior, array($klucz => $wart)), $k);
else
$wynik[] = $zbior;
return $wynik;
}
?>
Użycie powyższej funkcji jest bardzo proste - wystarczy podać dwa argumenty:
zbior - n-elementowa tablica zawierająca zbiór, z którego będziemy wyznaczać kombinacje
k - rozmiar podzbiorów z kombinacjami.
Poniższy przykład obrazuje wypisanie wszystkich 2-elementowych kombinacji ze zbioru 3-elementowego {1,2,3}.
<?
print_r(kombinacje(array(1,2,3), 2));
?>









