Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kombinacje bez powtórzeń
Forum PHP.pl > Forum > PHP
bryzas
Witam,
Poradzcie jak wypisać n elementowe kombinacje bez powtórzeń z k elementowego zbioru questionmark.gif
np:
zbiór :
{0,1,2,3}
kombinacje :
01
02
03
12
13
23

Wskrobałem coś takiego
(przykład bo w zalezności od wcześniejszych wyliczeń, w talicy może być różna ilość elementów
tu dla 4 elementów):
CODE

$pary[] = 0;
$pary[] = 1;
$pary[] = 2;
$pary[] = 3;

for ($i = 0; $i < count($pary)-1; $i++) {
for ($j = 0; $j < count($pary); $j++) {
if ($pary[$i] <> $pary[$j]) {
echo $i." : ".$j." OR ".$j." : ".$i;
}
}
}


ale wypisuje :

0:1 OR 1:0
0:2 OR 2:0
0:3 OR 3:0
1:0 OR 0:1
1:2 OR 2:1
1:3 OR 3:1
2:0 OR 0:2
2:1 OR 1:2
2:3 OR 3:2

a chcę aby wypisywało :

0:1 OR 1:0
0:2 OR 2:0
0:3 OR 3:0
1:2 OR 2:1
1:3 OR 3:1
2:3 OR 3:2
yasiek
Wprowadź sobie jeszcze jedną zmienną, na przykład $k, która będzie zliczała które to powtórzenie; zmienna $j będzie rozpoczynała pętlę z wartością $k. Wyglądać to będzie mniej więcej tak:

Kod
$pary[] = 0;
$pary[] = 1;
$pary[] = 2;
$pary[] = 3;
$k = 0;

for ($i = 0; $i < count($pary)-1; $i++) {
for ($j = $k; $j < count($pary); $j++) {
if ($pary[$i] <> $pary[$j]) {
echo $i." : ".$j." OR ".$j." : ".$i.'<br />';
}
}
$k++;
}
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.