LoyC Posted March 28, 2009 Report Share Posted March 28, 2009 Ir 10 cilvēki. Un vajadzētu izvadīt visus iespējamos variantus, kā vinjus pa 2 var savienot. Tas laikam sanāk, ka būs 10*9=90 varianti? Kā to varētu izvadīt, pieņemot ka cilvēki ir vienā masīvā? Quote Link to comment Share on other sites More sharing options...
bubu Posted March 28, 2009 Report Share Posted March 28, 2009 Ja cilvēku kārtība nav svarīga (1 un 2 ir tas pats kas 2 un 1), tad būs tikai 45 varianti (10!/2!/8! - kombinācija). Ja kārtība ir svarīga, tad būs 90 varianti (10!/8! - permutācija). To 90 variantu kods izskatītots apmēram šādi (pseidokodā): masivs = [...]; // visi elementi for (i=0; i<count(masivs); i++) { for (j=0; j<count(masivs); j++) { if (i != j) { print masivs[i], masivs[j] } } } Quote Link to comment Share on other sites More sharing options...
gaziks52 Posted March 28, 2009 Report Share Posted March 28, 2009 (edited) Ja kārtība ir svarīga, tad būs 90 varianti (10!/8! - permutācija). vai tad tā nebūs variācija bez atkārtojumiem??? .... nu īstenībā tas nav tik svarīgi :) šitā laikam būs ja kārtība nav svarīga... masivs = [...]; // visi elementi for (i=0; i<count(masivs); i++) { for (j=i; j<count(masivs); j++) { if (i != j) { print masivs[i], masivs[j] } } } Edited March 28, 2009 by gaziks52 Quote Link to comment Share on other sites More sharing options...
codez Posted March 28, 2009 Report Share Posted March 28, 2009 gazik, otrajā for ciklā liec j=i+1 un nebūs jātaisa if`s Quote Link to comment Share on other sites More sharing options...
bubu Posted March 28, 2009 Report Share Posted March 28, 2009 Un kurš tādā gadījumā uzģenerēs kombināciju 3 0, vai jebkuru citu formā N M, kur M<N ? Quote Link to comment Share on other sites More sharing options...
LoyC Posted March 28, 2009 Author Report Share Posted March 28, 2009 Šo itkā sapratu. Bet vai varētu vēl sarezģītāku ar nosacijumu, ka tas pats cilveks neatkartojas kamēr visi citi nav izvadīti. Tas būtu ja ņem 4 cilvekus tikai: 1-2 3-4 1-3 2-4 utt. Nevis: 1-2 1-3 1-4 2-3 utt. Quote Link to comment Share on other sites More sharing options...
gaziks52 Posted March 28, 2009 Report Share Posted March 28, 2009 (edited) Un kurš tādā gadījumā uzģenerēs kombināciju 3 0, vai jebkuru citu formā N M, kur M<N ? nu izskatās ka autors prasa bez atkārtojumiem tātad tas nemaz nav vajazdīgs tas 3 0... Šo itkā sapratu. Bet vai varētu vēl sarezģītāku ar nosacijumu, ka tas pats cilveks neatkartojas kamēr visi citi nav izvadīti.Tas būtu ja ņem 4 cilvekus tikai: 1-2 3-4 1-3 2-4 utt. Nevis: 1-2 1-3 1-4 2-3 utt. nu bet tas pats vien jau būs tikai secība cita... tas ko tev vajag... 1-2 3-4 1-3 2-4 1-4 2-3 tas kas sanāk ar to algoritmu 1-2 1-3 1-4 2-3 2-4 3-4 Edited March 28, 2009 by gaziks52 Quote Link to comment Share on other sites More sharing options...
LoyC Posted March 28, 2009 Author Report Share Posted March 28, 2009 Zinu jā, ka sanāk, bet to secību gribu tieši. Quote Link to comment Share on other sites More sharing options...
gaziks52 Posted March 28, 2009 Report Share Posted March 28, 2009 nu viens veids kā to izdarīt ir salikt rezultātus masīvā... mas[0]='1-2' mas[1]='1-3' mas[2]='1-4' mas[3]='2-3' mas[4]='2-4' mas[5]='3-4' for(i=0; i<count(mas)/2; i++) { print mas[i]; print mas[count(mas)+i+1]; } gan jau ka var vienkāršāk bet šitajam arī vajadzētu iet .. Quote Link to comment Share on other sites More sharing options...
bubu Posted March 28, 2009 Report Share Posted March 28, 2009 Bez atkārtojumiem sanāks tik 45 varianti, nevis 90 kā prasa autors ;) Ja vajag bez atkārtojumiem, tad ņem vērā codez ieteikumu un nebūs tev atkārtojumu. Quote Link to comment Share on other sites More sharing options...
LoyC Posted March 28, 2009 Author Report Share Posted March 28, 2009 Doma ir tāda ka vajag sadalīt pa grupām, kur katrā grupā katrs cilveks ir tikai vienu reizi un katrā grupā ar citu pretinieku. Laikam sākumā jau vajadzēja pateikt. Quote Link to comment Share on other sites More sharing options...
mounkuls Posted March 28, 2009 Report Share Posted March 28, 2009 Vienā kverijā nez vai sanāks. Bet nu atnāks Gints Plivna un tad jau....:) Quote Link to comment Share on other sites More sharing options...
bubu Posted March 28, 2009 Report Share Posted March 28, 2009 Pirčom tur kveriji? Vai tad tas viss no datubāzes jāizvelk? Quote Link to comment Share on other sites More sharing options...
LoyC Posted March 30, 2009 Author Report Share Posted March 30, 2009 Jau kuro dienu nevaru pats izdomāt, kā izveidot. Doma ir tāda ka vajag sadalīt pa grupām, kur katrā grupā katrs cilveks ir tikai vienu reizi un katrā grupā ar citu pretinieku. Quote Link to comment Share on other sites More sharing options...
codez Posted March 30, 2009 Report Share Posted March 30, 2009 Man sanāca, ka šādi var: <?php // (c) codez $teams=19; if ($teams%2==1) {$teams++;} echo 'Teams:'.$teams.'<br />'; for ($i=2;$i<=$teams;$i++){ echo '1:'.$i; for ($j=1;$j<($teams/2);$j++){ $t1=($i+$j-2)% ($teams-1)+2; $t2=($teams+$i-$j-3)% ($teams-1)+2; echo ' | '.$t1.':'.$t2; } echo '<hr />'; } ?> Ja ir nepāra skaits komandu, tad pieliekam 1 klāt un tā komanda, kuru iepāro ar lieko, izlaiž to raundu. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.