Kombinatorika

Programovacie jazyky, rady, poradňa...
mnichovcan
Medium Expert
Medium Expert
Príspevky: 97
Registrovaný: 17 mar 2011, 23:03

Kombinatorika

Príspevok od používateľa mnichovcan »

Mám problém neviem napísať kod ktorý bi mi spravil z prvkov v poli kombinacie.
Mám

Kód: Vybrať všetko

$pole=array("1"=>"A","B","C","D");
a chcem toto
A-B
A-C
A-D
B-C
B-D
D-C
skúšal som to všelijako ale vždy to bola hlúposť.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Kombinatorika

Príspevok od používateľa BX »

jednoducho

Kód: Vybrať všetko

for i = 0 do pocet
   for j = i+1 do pocet
     zobraz pole[i] a pole[j]
Baseilos
Light Expert
Light Expert
Príspevky: 57
Registrovaný: 01 máj 2011, 2:15

Re: Kombinatorika

Príspevok od používateľa Baseilos »

Predpokladam ze ide o PHP.

Nasledujuci kod vygeneruje vsetky 2j kombinacie: A-A, A-B, A-C, A-D, B-A, B-B ... , D-C, D-D

Kód: Vybrať všetko

foreach($pole as $hodnota1) {
   foreach($pole as $hodnota2) {
      printf("%c - %c\n", $hodnota1, $hodnota2);
   } 
}
Nasledujuci kod vygeneruje 2j kombinacie nasledovne: A-B, A-C, A-D, B-C, B-D, C-D. Predpokladam ze chces toto, len si sa sekol v D-C

Kód: Vybrať všetko

$pocetPrvkov = count($pole);
for ($i = 0; i < $pocetPrvkov - 1; $i++) {
    for ($j = $i + 1; $j < $pocetPrvkov; $j++) {
         printf("%c - %c\n", $pole[$i], $pole[$j]);   
    }
}
Pokial by si chcel viac ako 2j kombinacie je nutne pouzit viac zanorenych cyklov.
Napísať odpoveď