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


#1 by Dawid Szałęga on October 27th, 2009
Fajna funkcja, tylko ma jeden problem – nie działa
Funkcja daje kombinacje z powtórzeniami.
#2 by lio on October 28th, 2009
bardzo fajne rozwiazanie